MemCache指令汇总

学习MemCache的都知道,已知MemCache的某个节点,直接telnet过去,就可以使用各种命令操作MemCache了,下面学习MemCache的几种命令:


命    令


作    用


get


返回Key对应的Value值


add


添加一个Key值,没有则添加成功并提示STORED,有则失败并提示NOT_STORED


set


无条件地设置一个Key值,没有就增加,有就覆盖,操作成功提示STORED


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 1023STAT uptime 21069937STAT time 1447235954STAT version 1.4.5STAT pointer_size 64STAT rusage_user 1167.020934STAT rusage_system 3346.933170STAT curr_connections 29STAT total_connections 21STAT connection_structures 49STAT cmd_get 49STAT cmd_set 7458STAT cmd_flush 0STAT get_hits 7401STAT get_misses 57..(delete、incr、decr、cas的hits和misses数,cas还多一个badval)

STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 22026555STAT bytes_written 8930466STAT limit_maxbytes 4134304000STAT accepting_conns 1STAT listen_disabled_num 0STAT threads 4STAT bytes 151255336STAT current_items 57146STAT total_items 580656STAT 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中的信息,还是拿一组数据举个例子:

STAT1:chunk_size 96
 ...
 STAT 2:chunk_size 144
 STAT 2:chunks_per_page 7281
 STAT 2:total_pages 7
 STAT 2:total_chunks 50967
 STAT 2:used_chunks 45197
 STAT 2:free_chunks 1
 STAT 2:free_chunks_end 5769
 STAT 2:mem_requested 6084638
 STAT 2:get_hits 48084
 STAT 2:cmd_set 59588271
 STAT 2:delete_hits 0
 STAT 2:incr_hits 0
 STAT 2:decr_hits 0
 STAT 2:cas_hits 0
 STAT 2:cas_badval 0
 ...
 STAT 3:chunk_size 216
 ...

首先看到,第二个slab的chunk_size(144)/第一个slab的chunk_size(96)=1.5,第三个slab的chunk_size(216)/第二个slab的chunk_size(144)=1.5,可以确定这个MemCache的增长因子是1.5,chunk_size以1.5倍增长。然后解释下字段的含义:


参  数  名


作      用


chunk_size


当前slab每个chunk的大小,单位为字节


chunks_per_page


每个page可以存放的chunk数目,由于每个page固定为1M即1024*1024字节,所以这个值就是(1024*1024/chunk_size)


total_pages


分配给当前slab的page总数


total_chunks


当前slab最多能够存放的chunk数,这个值是total_pages*chunks_per_page


used_chunks


已经被分配给存储对象的chunks数目


free_chunks


曾经被使用过但是因为过期而被回收的chunk数


free_chunks_end


新分配但还没有被使用的chunk数,这个值不为0则说明当前slab从来没有出现过容量不够的时候


mem_requested


当前slab中被请求用来存储数据的内存空间字节总数,(total_chunks*chunk_size)-mem_requested表示有多少内存在当前slab中是被闲置的,这包括未用的slab+使用的slab中浪费的内存


get_hits


当前slab中命中的get请求数


cmd_set


当前slab中接收的所有set命令请求数


delete_hits


当前slab中命中的delete请求数


incr_hits


当前slab中命中的incr请求数


decr_hits


当前slab中命中的decr请求数


cas_hits


当前slab中命中的cas请求数


cas_badval


当前slab中命中但是更新失败的cas请求数

看到这个命令的输出量很大,所有信息都很有作用。举个例子吧,比如第一个slab中使用的chunks很少,第二个slab中使用的chunks很多,这时就可以考虑适当增大MemCache的增长因子了,让一部分数据落到第一个slab中去,适当平衡两个slab中的内存,避免空间浪费。

文章来自:五月的仓颉

时间: 2024-11-03 22:52:11

MemCache指令汇总的相关文章

Memcache存储机制与指令汇总

1.memcache基本简介 memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Memcache的运行图: Memcache的特征 memcached作为高速运行的分布式缓存服务器,具有以下的特点. 1.基于C/S架构协议简单 memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议. 因此,通过telnet也能在memcached上保存数据.取得数据.

gSoap工具wsdl2h及soapcpp2指令汇总

gSoap开发包的下载地址http://sourceforge.net/projects/gsoap2,在bin目录下提供了两个工具: 1:wsdl2h:The gSOAP wsdl2h tool imports one or more WSDLs and XML schemas and generates a gSOAP header le with familiar C/C++ syntax to define the Web service operations and the C/C++

Linux常用到的指令汇总

Linux常用到的指令汇总 根据鸟哥linux私房菜上定义的:一定要先學會的指令:ls, more, cd, pwd, rpm, ifconfig, find 登入與登出(開機與關機):telnet, login, exit, shoudown, reboot Linux 多人多工與背景執行功能:& 與 [ctrl]+[z], fg, ps, kill 檔案與目錄管理:cd, pwd, ls, cat, more, mkdir, rm, rmdir, mv, cp, ln, find, wher

dockerfile指令汇总

dockerfile指令汇总 1.cmd 指定一个容器启动时可用的指令或指令和参数. cmd ["/bin/true"] cmd["/bin/bash","-l"] 注意:docker run会覆盖cmd命令:深刻理解cmd和entrypoint之间的相互作用也是十分重要的:容器里只能指定一条cmd指令,如果需要启动容器的时候运行多个进程或者命令,考虑使用supervisor服务管理工具. 2.entrypoint docker run执行的指令

Dockerfile 指令汇总及解析

原文地址:http://www.maoyupeng.com/dockerfile-command-introduction.html 什么是Dockerfile Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像.它们简化了从头到尾的流程并极大的简化了部署工作.Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数.其产出为一个新的可以用于创建容器的镜像. 当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形

Linux指令汇总

记录一些常用的指令组合,实现一些经常使用的功能: 一.遍历目录下文件名 想得到当前目录下(不包括子目录)的相关文件时,可以这样:ls -1 | grep ".csv$" > result.txt想得到当前目录下,包括子目录中的相关文件时,应该用find命令:find . -type f -name "*.csv" > result.txt

[Linux] PuTTY指令汇总(持续更新中...)

写在前面: 以前真心没有玩过Linux系统,总感觉整天摆弄Linux的同学都是大牛.如今,在公司里实习需要远程登录Linux服务器,所有的代码都要在开发板上完成,所以被逼无奈也不得不定下心来好好学学Linux系统的各种操作.我现在用的远程登录软件是PuTTY,所以简单总结一下常用的PuTTY指令,方便以后进行查阅. 1. PuTTY介绍 随着Linux在服务器端应用的普及,Linux系统管理越来越依赖于远程.在各种远程登录工具中,PuTTY是出色的工具之一.PuTTY是一个免费的.Windows

ARM汇编指令汇总

1.ARM汇编的格式:    在ARM汇编里,有些字符是用来标记行号的,这些字符要求顶格写:有些伪码是需要成对出现的,例如ENTRY和END,就需要对齐出现,也就是说他们要么都顶格,要么都空相等的空,否则编译器将报错.常量定义需要顶格书写,不然,编译器同样会报错.    2.字符串变量的值是一系列的字符,并且使用双引号作为分界符,如果要在字符串中使用双引号,则必须连续使用两个双引号.    3.在使用LDR时,当格式是LDR r0,=0x022248,则第二个参数表示地址,即0x022248,同

git常用指令汇总

命令行指令 Git 全局设置 git config --global user.name "cqu2003" git config --global user.email "[email protected]" 创建新版本库 git clone [email protected]:cqu2003/demo.git cd demo touch README.md git add README.md git commit -m "add README"