memcache常用命令

欢迎关注本人公众号


telnet到memcached服务器后有很多的命令可以使用,除了大家熟知的add、get、set、incr、decr、replace、delete等赋值命令外,还有一系列的获取服务器信息的命令,这部分命令都是以stats开头的。

memcached 查看方法

格式: telnet ip port

例如 telnet localhost 11211
退出命令:quit


一.存储命令

存储命令格式:

[plain]  view plain copy
  1. <command name> <key> <flag> <expire> <bytes>  
  2. <data block>  

参数说明:

command name命令名称
key查找关键字
flag存储额外信息
expire数据保存时间,0表示永远,单位秒
bytes存储数据的字节数
data block存储的数据

1.set  无论如何都存储,数据不存在时存储,数据存在时更新。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. set mykey 0 0 3  
  6. 456  
  7. STORED  
          2.add 当数据不存在时存储。

[plain]  view plain copy
  1. add mykey 0 0 3  
  2. 123  
  3. STORED  
  4. add mykey 0 0 3  
  5. 456  
  6. NOT_STORED  
          3.replace 当数据存在时存储

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. replace mykey 0 0 3  
  6. 456  
  7. STORED  
  8.   
  9. delete mykey  
  10. DELETED  
  11.   
  12. replace mykey 0 0 3  
  13. 678  
  14. NOT_STORED  

二.读取命令


           1.get
 key 可以一个或多个,用空格格开。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. set mykey1 0 0 3  
  6. 456  
  7. STORED  
  8.   
  9. get mykey mykey1  
  10. VALUE mykey 0 3  
  11. 123  
  12. VALUE mykey1 0 3  
  13. 456  
  14. END  
          2.gets 与 get 一样,但会返回多一个数字,这个数字用来检查数据是否被修改过,如修改过,这个数字回改变。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. gets mykey  
  6. VALUE mykey 0 3 7  
  7. 123  
  8. END  
  9.   
  10. replace mykey 0 0 3  
  11. 888  
  12. STORED  
  13.   
  14. gets mykey  
  15. VALUE mykey 0 3 8  
  16. 888  
  17. END  

3.cas cas即checked and set ,当最后一个参数与gets返回的数字一致时才存储,否则返回EXISTS。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. gets mykey  
  6. VALUE mykey 0 3 9  
  7. 123  
  8. END  
  9.   
  10. cas mykey 0 0 3 8  
  11. 456  
  12. EXISTS  
  13.   
  14. cas mykey 0 0 3 9  
  15. 456  
  16. STORED  

三.追加与清除命令


1.append
 将数据追加到当前缓存数据的之后,当缓存数据存在时才存储。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. append mykey 0 0 3  
  6. 456  
  7. STORED  
  8.   
  9. get mykey  
  10. VALUE mykey 0 6  
  11. 123456  
  12. END  
  13.   
  14. append notexists 0 0 3  
  15. 456  
  16. NOT_STORED  

2.prepend 将数据追加到当前缓存数据的之前,当缓存数据存在时才存储。

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. prepend mykey 0 0 3  
  6. 456  
  7. STORED  
  8.   
  9. get mykey  
  10. VALUE mykey 0 6  
  11. 456123  
  12. END  
  13.   
  14. prepend notexists 0 0 3  
  15. 456  
  16. NOT_STORED  

3.delete 删除缓存数据,数据存在返回DELETED,数据不存在返回NOT_FOUND

[plain]  view plain copy
  1. set mykey 0 0 3  
  2. 123  
  3. STORED  
  4.   
  5. delete mykey  
  6. DELETED  
  7.   
  8. delete mykey  
  9. NOT_FOUND  
          4.flush_all 将当前所有缓存数据设置为过期,但不会释放内存。
[plain]  view plain copy
  1. flush_all  
  2. OK  

四.状态命令

1.stats 查看memcached运行状态

[plain]  view plain copy
  1. pid                     Memcached 进程ID    
  2.     
  3. uptime                  Memcached 运行时间,单位:秒    
  4.     
  5. time                    Memcached 当前的UNIX时间    
  6.     
  7. version                 Memcached 的版本号    
  8.     
  9. rusage_user             该进程累计的用户时间,单位:秒    
  10.     
  11. rusage_system           该进程累计的系统时间,单位:秒    
  12.     
  13. curr_items              Memcached 当前存储的内容数量    
  14.     
  15. total_items             Memcached 启动以来存储过的内容总数    
  16.     
  17. bytes                   Memcached 当前存储内容所占用的字节数(*/1024/1024=mb)    
  18.     
  19. curr_connections        当前连接数量    
  20.     
  21. total_connections       Memcached 运行以来接受的连接总数    
  22.     
  23. connection_structures   Memcached 分配的连接结构的数量    
  24.     
  25. cmd_get                 查询请求总数    
  26.     
  27. cmd_set                 存储(添加/更新)请求总数    
  28.     
  29. get_hits                查询成功获取数据的总次数    
  30.     
  31. get_misses              查询成功未获取到数据的总次数    
  32.     
  33. bytes_read              Memcached 从网络读取到的总字节数    
  34.     
  35. bytes_written           Memcached 向网络发送的总字节数    
  36.     
  37. limit_maxbytes          Memcached 在存储时被允许使用的字节总数    

2.stats items
执行stats items,可以看到STAT items行,如果memcached存储内容很多,那么这里也会列出很多的STAT items行。


        3.stats cachedump slabs_id limit_num

slabs_id:由stats items返回的结果(STAT items后面的数字)决定的
limit_num:返回的记录数,0表示返回所有记录
通过stats items、stats cachedump slab_id limit_num配合get命令可以遍历memcached的记录。

[plain]  view plain copy
  1. stats cachedump 1 0  
  2. ITEM mykey [3 b; 1362880145 s]  
  3. END  


           4.stats slabs
 显示各个slab的信息,包括chunk的大小、数目、使用情况等


           5.stats sizes
 输出所有item的大小和个数


          6.stats reset
 清空统计数据

 7 stats maps  是把/proc/self/maps的数据显示出来

如果远程攻击者连接到了memcached的TCP端口(默认11211)并发布了stats maps命令,Memcached就会直接将/proc/self/maps的输出管道传输给客户端。这可能导致泄漏所分配内存区域的地址。


stats slabs

详细介绍stats slabs

 
 
  1. STAT 1:chunk_size 88
  2. STAT 1:chunks_per_page 11915
  3. STAT 1:total_pages 1
  4. STAT 1:total_chunks 11915
  5. STAT 1:used_chunks 11915
  6. STAT 1:free_chunks 0
  7. STAT 1:free_chunks_end 11914
  8. STAT active_slabs 1
  9. STAT total_malloced 1048520
  10. END

chunk_size:每个chunk(块)使用的空间数量,一个item存储到一个近似大小的chunk中

chunk_per_page:每page存在的chunk数量,slabs是按页(page)分配的,一页一般为1M,每个slab(也即每页)又划分为若干chunk,这里涉及到memcached的内存管理,这里不多解释,可以参考后面的附文。

total_pages:该slabclass分配到的page数量

total_chunks:该slabclass拥有的chunk数量

used_chunks:已经分配给item的chunk数量(不一定已经装填了item)

free_chunks:尚未分配给item的chunk数量,或者由delete释放的chunk

free_chunks_end:slabclass中最后一页的自由块数量,即该slabclass尚有多少自由块可以用来装填item

active_slabs:已分配的slabclass数量

total_malloced:已分配给slab page的内存数量


stats items 显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)stats detail [on|off|dump]

设置或者显示详细操作记录

参数为on,打开详细操作记录

参数为off,关闭详细操作记录

参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)

 
 
  1. stats items dump
  2. STAT items:1:number 7
  3. STAT items:1:age 23124
  4. STAT items:1:evicted 0
  5. STAT items:1:outofmemory 0
  6. .........
  7. END


stats cachedump slab_id limit_num   显示某个slab中的前limit_num个key列表

显示格式如下:ITEM key_name [ value_length b; expire_time|access_time s]其中,memcached 1.2.2及以前版本显示的是  访问时间(timestamp) 1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)

如果是永不过期的key,expire_time会显示为服务器启动的时间

 
 
  1. stats cachedump 7 2
  2. ITEM copy_test1 [250 b; 1207795754 s]
  3. ITEM copy_test [248 b; 1207793649 s]stats slabs

显示各个slab的信息,包括chunk的大小、数目、使用情况等

 stats detail dump  ( stats detail  [on|off|dump]  )

 
 
  1. PREFIX copy_test2 get 1 hit 1 set 0 del 0
  2. PREFIX copy_test1 get 1 hit 1 set 0 del 0
  3. PREFIX cpy get 1 hit 0 set 0 del 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值