您的位置:首页 > 数据库 > Memcache

Memcached常用命令及使用说明

2017-09-06 15:21 369 查看


1、添加

(1)、无论如何都存储的set





这个set的命令在memcached中的使用频率极高。set命令不但可以简单添加,如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用。

可以通过“get 键名”的方式查看添加进去的记录:





如你所知,我们也可以通过delete命令删除掉,然后重新添加。





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





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





 


2、删除





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

 


二、读取命令


1、get

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





2、gets





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


3、cas

cas即checked and set的意思,只有当最后一个参数和gets所获取的参数匹配时才能存储,否则返回“EXISTS”。





 


三、状态命令


1、stats





 


2、stats items





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

 


3、stats cachedump slab_id limit_num

我们执行stats cachedump 1 0 命令效果如下:





这里slab_id为1,是由2中的stats items返回的结果(STAT items后面的数字)决定的;limit_num看起来好像是返回多少条记录,猜的一点不错, 不过0表示显示出所有记录,而n(n>0)就表示显示n条记录,如果n超过该slab下的所有记录,则结果和0返回的结果一致。





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

 


4、其他stats命令

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





 


四、其他常见命令


1、append





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

 


2、prepend

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





 


3、flush_all





该命令有一个可选的数字参数。它总是执行成功,服务器会发送 “OK\r\n” 回应。它的效果是使已经存在的项目立即失效(缺省),或在指定的时间后。此后执行取回命令,将不会有任何内容返回(除非重新存储同样的键名)。 flush_all 实际上没有立即释放项目所占用的内存,而是在随后陆续有新的项目被储存时执行(这是由memcached的懒惰检测和删除机制决定的)。

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目,在被执行取回命令时命令被忽略。


4、其他命令

memcached还有很多命令,比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等,这里只列出开发和运维中经常使用的命令,其他的不再一一举例说明。

memcache作为一款优秀的进程外缓存,常常被运用于高并发系统架构中。这里主要谈谈怎么通过telnet工具,查看memcache运行状况并对其key进行管理维护。假设memcache安装目录:/usr/local/memcached
          

1、启动memcache

[plain] view
plaincopy

[root@localhost ~]# /usr/local/memcached/bin/memcached -d -m 512  -u root -l 192.168.119.70 -p 12000 -c 512 -P /usr/local/memcached/memcached.pid  

启动参数详解

 -d:以守护进程方式启动。如果该参数没有指定,当按ctrl+c命令结束,memcache自动关闭

 -m:分配给memcache使用的最大内存数 单位是m,默认是64m

 -u: 指定运行memcache的用户

 -l: 指定监听的ip地址

 -p: 指定监听的tcp端口号,可以通过-u指定udp端口.默认是11211

 -c: 最大并发连接数

 -P: 报错进程id的文件

 memcache 启动之后,我们就可以通过telnet连接memcache,对其进行简单操作管理。
2、telnet连接memcache

[plain] view
plaincopy

[root@localhost ~]# telnet 192.168.119.70 12000   

Trying 192.168.119.70...  

Connected to 192.168.119.70 (192.168.119.70).  

Escape character is '^]'.   

 连接成功之后,即可对memcache进行操作管理了,常用的命令有:
Ⅰ、添加修改
        命令格式:<command> <key> <flags> <exptime> <bytes>\r\n<data block>\r\n
       <command>:add, set或 replace
       <key> :缓存的名字
       <flag>:16位无符号整数,和key要存储的数据一起存储,并在程序get缓存时,返回。
      <exptime>:过去时间,0 表示永远不过期,如果非零,表示unix时间或距此秒数
       <bytes>:存储数据的字节数
        \r\n: 表示换行回车
        命令结果:
                STORED :表示成功
                NOT_STORED : 表示失败 
a)、添加缓存

[plain] view
plaincopy

add id 1 0 4  

1234  

STORED  

         如果key已经存在,则会添加失败。
b)、修改缓存

[plain] view
plaincopy

replace id 1 0 4  

3456  

STORED  

     key存在时,成功;不存在时,失败。
c)、设置缓存

[plain] view
plaincopy

set id 1 0 4  

2345  

STORED  

    key不存在时,添加【add】;已存在时,替换【replace】。
 
Ⅱ、读取
       命令格式:get <key>+\r\n
       <key>+:表示一个或多个key,多个key时,用空格隔开
a)、读取单个key的缓存

[plain] view
plaincopy

get id  

VALUE id 1 4  

1234  

END  

 
 b)、读取多个key的缓存

[plain] view
plaincopy

get id name  

VALUE id 1 4  

3456  

VALUE name 1 3  

jim  

END  

 
Ⅲ、删除
命令格式:delete <key> \r\n
<key>:要删除的key
删除id

[plain] view
plaincopy

delete id   

DELETED  

 
Ⅳ、清空所有缓存
命令格式:flush_all

[plain] view
plaincopy

flush_all  

OK  

 
Ⅴ、查看缓存服务器状态
命令:stats

[plain] view
plaincopy

stats  

STAT pid 2711     //进程id  

STAT uptime 2453  //总的运行时间,单位描述  

STAT time 1344856333  //当前时间  

STAT version 1.4.0 //版本  

STAT pointer_size 32    //服务器指针位数,一般32位操作系统是32  

STAT rusage_user 0.002999  //进程的累计用户时间   

STAT rusage_system 1.277805  //进程的累计系统事件  

STAT curr_connections 1  //当前连接数  

STAT total_connections 11  //服务器启动后,总连接数  

STAT connection_structures 11  //连接结构的数量  

STAT cmd_get 17   //总获取次数  

STAT cmd_set 1  //总写入次数  

STAT cmd_flush 1   //总的的清空次数  

STAT get_hits 1  //总的命中次数  

STAT get_misses 7   //获取没有命中次数  

STAT delete_misses //删除没有命中次数  

STAT delete_hits 4   //删除命中次数  

STAT incr_misses //递增操作没有命中次数   

STAT incr_hits //递增操作命中次数  

STAT decr_misses //递减操作没有命中的次数  

STAT decr_hits //递减操作命中的次数  

STAT cas_misses //cas设置没有命中次数  

STAT cas_hits //cas命中次数  

STAT cas_badval //cas操作找到key,但版本过期,没有设置成功  

STAT bytes_read 455    //总共获取数据量  

STAT bytes_written 1175  //总共写入数据量  

STAT limit_maxbytes 1048576  //最大允许使用内存,单位字节  

STAT accepting_conns 1      

STAT listen_disabled_num 0  

STAT threads 5   //当前线程数  

STAT conn_yields 0  

STAT bytes 56      //已用缓存空间  

STAT curr_items 1  //当前缓存的keyvalue数  

STAT total_items 7 //总共缓存的keyvalue数,包括过期删除的  

STAT evictions //通过删除keyvalue,释放内存次数  

END  

Ⅵ、打印版本
命令:version

[plain] view
plaincopy

version  

VERSION 1.4.0  

Ⅶ、打印内存信息
命令:stats slabs

[plain] view
plaincopy

stats slabs  

STAT 1:chunk_size 80  

STAT 1:chunks_per_page 13107  

STAT 1:total_pages 1  

STAT 1:total_chunks 13107  

STAT 1:used_chunks 1  

STAT 1:free_chunks 1  

STAT 1:free_chunks_end 13105  

STAT 1:get_hits 10  

STAT 1:cmd_set 10  

STAT 1:delete_hits 4  

STAT 1:incr_hits 0  

STAT 1:decr_hits 0  

STAT 1:cas_hits 0  

STAT 1:cas_badval 0  

STAT active_slabs 1  

STAT total_malloced 1048560  

END  

 
3、退出telnet 

[plain] view
plaincopy

quit  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: