Memcache的详细讲解(4)

#define REALTIME_MAXDELTA 60*60*24*30
static rel_time_t realtime(const time_t exptime) {
      if (exptime == 0) return 0;
      if (exptime > REALTIME_MAXDELTA) {                     
              if (exptime <= process_started)                       
                      return (rel_time_t)1;                               
              return (rel_time_t)(exptime - process_started); 
      } else {                                                                 
              return (rel_time_t)(exptime + current_time);   
      }
}

这个失效的时间是memcache源码里面写的,开发者没有办法改变MemCache的Key值失效时间为30天这个限制

MemCache指令汇总

上面说过,已知MemCache的某个节点,直接telnet过去,就可以使用各种命令操作MemCache了,下面看下MemCache有哪几种命令:

命    令   作    用  
get   返回Key对应的Value值  
add    无条件地设置一个Key值,没有就增加,有就覆盖   
set     按照相应的Key值添加数据,如果Key已经存在则会操作失败  
replace    按照相应的Key值替换数据,如果Key值不存在则会操作失败   
stats   返回MemCache通用统计信息(下面有详细解读)  
stats items   返回各个slab中item的数目和最老的item的年龄(最后一次访问距离现在的秒数)  
stats slabs   返回MemCache运行期间创建的每个slab的信息(下面有详细解读)  
version   返回当前MemCache版本号  
flush_all   清空所有键值,但不会删除items,所以此时MemCache依旧占用内存  
quit   关闭连接  

stats指令解读

stats是一个比较重要的指令,用于列出当前MemCache服务器的状态,拿一组数据举个例子:

STAT pid 1023
STAT uptime 21069937
STAT time 1447235954
STAT version 1.4.5
STAT pointer_size 64
STAT rusage_user 1167.020934
STAT rusage_system 3346.933170
STAT curr_connections 29
STAT total_connections 21
STAT connection_structures 49
STAT cmd_get 49
STAT cmd_set 7458
STAT cmd_flush 0
STAT get_hits 7401
STAT get_misses 57
..(delete、incr、decr、cas的hits和misses数,cas还多一个badval)
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 22026555
STAT bytes_written 8930466
STAT limit_maxbytes 4134304000
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT bytes 151255336
STAT current_items 57146
STAT total_items 580656
STAT evicitions 0

这些参数反映着MemCache服务器的基本信息,它们的意思是:

参  数  名   作      用  
pid   MemCache服务器的进程id   
uptime   服务器已经运行的秒数  
time   服务器当前的UNIX时间戳   
version   MemCache版本   
pointer_size   当前操作系统指针大小,反映了操作系统的位数,64意味着MemCache服务器是64位的   
rusage_user   进程的累计用户时间   
rusage_system    进程的累计系统时间   
curr_connections     当前打开着的连接数  
total_connections     当服务器启动以后曾经打开过的连接数  
connection_structures    服务器分配的连接构造数   
cmd_get    get命令总请求次数   
cmd_set   set命令总请求次数   
cmd_flush    flush_all命令总请求次数   
get_hits    总命中次数,重要,缓存最重要的参数就是缓存命中率,以get_hits / (get_hits + get_misses)表示,比如这个缓存命中率就是99.2%   
get_misses    总未命中次数   
auth_cmds    认证命令的处理次数   
auth_errors    认证失败的处理次数   
bytes_read    总读取的字节数  
bytes_written    总发送的字节数   
 limit_maxbytes   分配给MemCache的内存大小(单位为字节)   
accepting_conns    是否已经达到连接的最大值,1表示达到,0表示未达到  
listen_disabled_num    统计当前服务器连接数曾经达到最大连接的次数,这个次数应该为0或者接近于0,如果这个数字不断增长, 就要小心我们的服务了  
threads    当前MemCache总线程数,由于MemCache的线程是基于事件驱动机制的,因此不会一个线程对应一个用户请求   
bytes    当前服务器存储的items总字节数  
current_items    当前服务器存储的items总数量   
total_items    自服务器启动以后存储的items总数量   

stats slab指令解读

如果对上面的MemCache存储机制比较理解了,那么我们来看一下各个slab中的信息,还是拿一组数据举个例子:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/daf47a0d5b46c2802c25b0d4aab29e90.html