Memcache 学习笔记(二):telnet 操作 memcached 中的数据
memcached 由客户端和服务端组成,服务端安装配置好之后,可以通过 telnet 本地的 memcached 端口来进行测试是否安装成功,也可以练习一些基本的命令来操作数据。这篇主要是看了《Using memcached: How to scale your website easily》这本书里面的例子之后整理出来的,书中一些没有的命令式参考网上别人的博客,主要有这两篇:
memcached命令行参数说明
和
memcached 命令操作详解
ubuntu 中安装 memcached 服务端
sudo apt-get install memcached
当然也可以直接下载源码来便已安装。
配置 memcached 服务
ubuntu 中使用 apt-get 方法安装的话,可以通过 memcached
命令来启动 。不过一般会加一些参数来进行配置。配置的时候,可以使用 memcached -h
来查看帮助信息,常用的参数有:
- -p : 使用的端口号,默认是 11211
- -m : 最大内存大小,默认是 64M
- -vv : 用very vrebose模式启动,调试信息和错误输出到控制台
- -d : 作为daemon在后台启动
指定不同的端口,可以同时启动多个 memcached 服务。
使用 telnet 操作数据
在 memcached 服务端的机子上启动 memcached 服务之后,可以通过执行 telnet 127.0.0.1 11211
来连接。
(telnet 操作最无法忍受的是左右方向键不能用、backspace 键不能用,这样命令一输错的话,只能重新来过,或许有有什么方法我不知道,查了也没有查到 >_<)
往 memcached 中添加或更新数据时,会返回 STORED / NOT_STORED 来指明数据知否成功插入或更新。
操作的基本形式是:
command <key> <flags> <expiration time> <bytes> <value>
- key :key 用于查找缓存值
- flags :可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
- expiration time :在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
- bytes :在缓存中存储的字节点
- value :存储的值(始终位于第二行)
set: 添加一个新条目或者更新已存在的条目。
set test1 0 0 10
testing001
STORED
add: 添加一个新条目,只有当插入的 key 不存在是才插入成功。
add test1 0 0 10
testing002
NOT_STORED
add test2 0 0 10
testing002
STORED
replace: 更新一个条目,只有当更新的 key 存在的时候才更新成功。
replace test1 0 0 10
testing003
STORED
replace test3 0 0 10
testing003
NOT_STORED
get: 通过 key 来取值。取单个key的时候,如果有值,返回三行,第一行以 VALUE 开头,指出是哪个key,第二行才是真的值,第三行以 END 结尾。如果没有值,则直接返回 END。 取多个值的时候,get 后面的多个key 用空格分开,返回结果是把有值的两行两行地拼起来,最后跟一个 END 结尾。
get test1
VALUE test1 0 10
testing003
END
get test4
END
get test1 test2
VALUE test1 0 10
testing003
END
gets: 比 get 命令多返回一个int值,用来唯一标识该值,如果把值改掉,那这个int值就会改变。可以用来判断数据是否发生过改变。
gets test1
VALUE test1 0 10 5
testtest01
END
set test1 0 0 10
test01test
STORED
gets test1
VALUE test1 0 10 6
test01test
END
cas: 意思是 check and set ,只有当最后一个参数 与 gets 得到的那个int值相同的时候,才会设置成功,否则返回 EXISTS。
cas test1 0 0 10 5
test02test
EXISTS
cas test1 0 0 10 6
test03test
STORED
get test1
VALUE test1 0 10
test03test
END
delete: 删除指定 key 对应的值。
incr / decr : 自增 / 自减。
flush_all: 清空所有条目。
append / prepend: 相当于 string 的 append 跟 prepend。