memcached的telnet命令

转载自:https://blog.csdn.net/we_shell/article/details/41866147


1. 连接

格式:telnet ip port,如下:

telnet 127.0.0.1 11211

2. 退出

quit


3.存储 命令说明

存储命令的格式:

<command name> <key> <flags> <exptime> <bytes>
<data block>

参数说明如下:
<command name>  set/add/replace
<key>                查找关键字
<flags>             整型参数,客户机使用它存储关于键值对的额外信息
<exptime>       该数据的存活时间(以秒为单位,0 表示永远) 
<bytes>            存储字节数
<data block>   存储的数据块(可直接理解为key-value结构中的value)

例如添加一个key:

3.1 添加

(1)无论如何都存储的set,如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

例:

[html]  view plain  copy
  1. set a 0 0 4  
  2.   
  3. 1234  
  4.   
  5. 回显:  
  6.   
  7. STORED  
  8.   
  9. 可以通过“get key”的方式查看添加进去的记录:  
  10.   
  11. get a  
  12.   
  13. 回显:  
  14.   
  15. VALUE a 0 4  
  16.   
  17. 8888  
  18.   
  19. END  

 
(2)只有数据不存在时进行添加的add

[html]  view plain  copy
  1. add b 0 0 3  
  2.   
  3. 888  
  4.   
  5. STORED  
  6.   
  7. 如果key已经存在,则回显  
  8.   
  9. NOT_STORED  


(3)只有数据存在时进行替换的replace

[html]  view plain  copy
  1. replace b 0 0 2  
  2.   
  3. 88  
  4.   
  5. STORED  
  6.   
  7. 如果key不存在,则回显  
  8.   
  9. NOT_STORED  


3.2删除

命令:delete key

删除已存在的键值和不存在的记录可以返回不同的结果


delete c

NOT_FOUND


delete b

DELETED


3.3 修改

命令:delete key
删除已存在的键值和不存在的记录可以返回不同的结果


4. 读取命令

4.1 get

get命令的key可以表示一个或者多个键,键之间以空格隔开

[html]  view plain  copy
  1. 获取一个  
  2. get b  
  3. VALUE b 0 2  
  4. aa  
  5. END  
  6.   
  7. 获取多个  
  8. get a b  
  9. VALUE a 0 4  
  10. 1234  
  11. VALUE b 0 2  
  12. aa  
  13. END  

4.2 gets

gets命令比普通的get命令多返回了一个数字。这个数字可以检查数据是否发生改变。当key对应的数据改变时,这个多返回的数字也会改变。

[html]  view plain  copy
  1. get a  
  2. VALUE a 0 4  
  3. 1234  
  4. END  
  5.   
  6. gets a  
  7. VALUE a 0 4 2  
  8. 1234  
  9. END  
  10.   
  11.   
  12. get b  
  13. VALUE b 0 2  
  14. aa  
  15. END  
  16.   
  17. gets b  
  18. VALUE b 0 2 5  
  19. aa  
  20. END  
  21.   
  22.   
  23. 3、cas  
  24. cas即checked and set的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。  
  25.   
  26. gets a  
  27. VALUE a 0 4 2  
  28. 1234  
  29. END  
  30.   
  31. cas a 0 0 4 3  
  32. 2154EXISTS        ——存储失败  
  33. get a  
  34. VALUE a 0 4  
  35. 1234  
  36. END  
  37.   
  38. cas a 0 0 4 2  
  39. 4321  
  40. STORED        ——存储成功  
  41. gets a  
  42. VALUE a 0 4 6  
  43. 4321  
  44. END  


5. 状态命令

5.1 stats 全局统计

可以计算缓存命中率
命中率=get_hits / (get_hits + get_misses)
get_hits表示命中次数
get_misses表示未命中次数
注意:这个命中率是从memcached启动开始所有的请求的综合值,不能反映一个时间段内的情况

5.2 stats items  统计各slab class中的item的情况

执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。
number 3 表示当前有3个值
age:反应了当前还在缓存的数据中最久的时间
evicted:如果一个slab的evicted属性不是0,则说明当前slab出现了提前剔除数据的情况,这个slab可能是你需要注意的。
evicted_time:如果evicted不为0,则evicited_time就代表最后被剔除的数据时间缓存的时间。

5.3 stats slabs  统计slabs的使用情况

chunk_size    当前slab每个chunk的大小
chunk_per_page     每个page能够存放的chunk数
total_pages  分配给当前slab的page总数
total_chunks 当前slab最多能够存放的chunk数,应该等于chunck_per_page * total_page
used_chunks 已经被占用的chunks总数
free_chunks  过期数据空出的chunk里还没有被使用的chunk数
free_chunks_end  新分配的但是还没有被使用的chunk数

5.4 stats cachedump slab_id limit_num 遍历memcached的记录

slab_id是由5.3中的stats items返回的结果(STAT items后面的数字)决定的;
limit_num是返回多少条记录,0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。

通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

5.5 其他stats命令

如stats slabs,stats sizes,stats reset等等使用也比较常见。


6. 其他常见命令

6.1 append

在现有的缓存数据后添加缓存数据,如现有缓存的key不存在服务器响应为NOT_STORED。

6.2 prepend

和append非常类似,但它的作用是在现有的缓存数据前添加缓存数据。

6.3 flush_all [<delay>]

该命令有一个可选的数字参数。它总是执行成功,服务器会发送 “OK\r\n” 回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。 flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由memcached的懒惰检测和删除机制决定的)。
这个最简单的命令仅用于清理缓存中的所有名称/值对。如果您需要将缓存重置到干净的状态,则 flush_all 能提供很大的用处。
flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。

6.4 incr/decr

对于存储为数字型(正值)的可以通过incr/decr命令进行增减操作。
这两个命令是原子操作。
这两个操作的前提是这个key存在且其值是一个有效的64-bit无符号整数的十进制表示(在内部存储时,其实是用的字符串)
decr至0后,再decr不会有效果。但incr到最大值后会溢出。

猜你喜欢

转载自blog.csdn.net/nirendao/article/details/80517426