| 
                         在定位问题、测试等时候经常需要对memcache的数据进行一些操作,但是其本身没有自带的客户端,所以只能通过telnet来进行操作。 
通过telnet连接memcache。 
复制代码 代码如下: 
telnet 127.0.0.1 11211 
 
memcache写入操作 
telnet写入memcache命令格式 
复制代码 代码如下: 
 <command name> <key> <flags> <exptime> <bytes>rn <data block>rn 
 
参数详解: 
1.<command name> 可以是”set”,“add”,“replace”。 
set:<key>不存在时添加,<key>存在时覆盖。 
add:<key>不存在时添加,<key>存在时则会操作失败。 
replace:<key>不存在时添加失败,<key>存在时替换数据 
2.<key> 保存数据的key 
3.<flags> 是一个16位的无符号的整数(以十进制的方式表示)。 
该标志将和需要存储的数据一起存储,并在客户端get数据时返回。 
客户可以将此标志用做特殊用途,此标志对服务器来说是透明的。 
4.<exptime> 过期的时间。 
0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。 
非0(unix时间),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。 
5.<bytes> 需要存储的字节数(不包含最后的”rn”),当用户希望存储空数据时,可以为0 
6.最后客户端需要加上”rn”作为”命令头”的结束标志。 
7.<data block>rn 
紧接着”命令头”结束之后就要发送数据块(即希望存储的数据内容),最后加上”rn”作为此次通讯的结束。 
 
telnet响应命令 
当以上数据发送结束之后,服务器将返回一个应答。可能有如下的情况: 
1.STOREDrn:表示存储成功 
2.NOT_STOREDrn: 表示存储失败,但是该失败不是由于错误。 
> 通常这是由于”add”或者”replace”命令本身的要求所引起的,或者该项在删除队列之中。 
示例 
复制代码 代码如下: 
set key 32 0 10rn 
helloworldrn 
STOREDrn 
获取Key&Value 
获取命令格式 
复制代码 代码如下: 
get <key>*rn 
 
参数详解: 
1.<key>*: 表示一个或者多个key(以空格分开) 
2.rn:命令结束 
响应结果 
服务器端将返回0个或者多个的数据项。每个数据项都是由一个文本行和一个数据块组成。当所有的数据项都接收完毕将收到ENDrn每一项的数据结构: 
复制代码 代码如下: 
VALUE <key> <flags> <bytes>rn 
<data block>rn 
 
参数详解: 
1.<key> 希望得到存储数据的key 
2.<falg> 发送set命令时设置的标志项 
3.<bytes>发送数据块的长度(不包含”rn”) 
4.rn 文本行的结束标志 
5.<data block> 希望接收的数据项。 
6.rn 接收一个数据项的结束标志。 
PS:如果有些key出现在get命令行中但没有返回相应的数据,这意味着服务器中不存在改项,可能是超时了,或者被删除了. 
示例 
复制代码 代码如下: 
get key 
VALUE key 32 10 
helloworld 
END 
删除KeyValue: 
复制代码 代码如下:delete <key> <time>rn 
参数详解: 
1.<key> 需要被删除数据的key 
2.<time> 客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数) 
3.rn命令头的结束 
检查Memcache服务器状态 
复制代码 代码如下:statsrn 
在这里可以看到memcache的获取次数,当前连接数,写入次数,已经命中率等; 
复制代码 代码如下: 
pid : 进程id 
uptime :总的运行时间,秒数 
time : 当前时间 
version : 版本号 
…… 
curr_items : 当前缓存中的KeyValue数量 
total_items : 曾经总共经过缓存的KeyValue数量 
bytes : 所有的缓存使用的内存量 
curr_connections 当前连接数 
…. 
cmd_get : 总获取次数 
cmd_set : 总的写入次数 
get_hits : 总的命中次数 
miss_hits :  获取失败次数 
….. 
bytes_read : 总共读取的流量字节数 
bytes_written : 总的写入流量字节 
limit_maxbytes : 最大允许使用的内存量,字节 
 
清空统计数据: 
复制代码 代码如下: 
stats reset 
 
清空所有键值 
复制代码 代码如下: 
flush_all 
 
注:flush并不会将items删除,只是将所有的items标记为expired,因此这时memcache依旧占用所有内存。 
退出 
复制代码 代码如下: 
quitrn 
 
 
其他命令 
1.显示各个slab的信息,包括chunk的大小、数目、使用情况等 
复制代码 代码如下:stats slabs 
2.显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数) 
复制代码 代码如下:stats items 
3.设置或者显示详细操作记录 
复制代码 代码如下:stats detail [on|off|dump] 
参数为on,打开详细操作记录 
参数为off,关闭详细操作记录 
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数) 
4.显示某个slab中的前limit_num个key列表 
复制代码 代码如下:stats cachedump slab_id limit_num 
显示格式如下: 
复制代码 代码如下:ITEM <key_name> [ <value_length> b; <expire_time|access_time> s] 
<key_name>:键名 
<value_length>:值长度(单位字节) 
<expire_time|access_time>:memcached 1.2.2及以前版本显示的是 访问时间(timestamp)                         (编辑:莱芜站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |