缓存之memcached
什么是memcached
memcached是一套分布式的快取系统,与redis相似,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。
memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
官方地址
http://memcached.org/
特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
•协议简单•基于libevent的事件处理•内置内存存储方式•memcached不互相通信的分布式
支持的语言
许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。仅仅memcached网站上列出的有:
•Perl•PHP•Python•Ruby•C#•C/C++•Lua•等等
常用命令及参数
启动Memcache 常用参数
-p <num> 设置TCP端口号(默认设置为: 11211)-U <num> UDP监听端口(默认: 11211, 时关闭)-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)-c <num> max simultaneous connections (default: 1024)-d 以daemon方式运行-u <username> 绑定使用指定用于运行进程<username>-m <num> 允许大内存用量,单位M (默认: 64 MB)-P <file> 将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与-d 一起使用
更多可以使用 memcached -h 在linux下:./usr/local/bin/memcached -d -u root -l 192.168.1.197 -m 2048 -p 12121 在window下:d:\App_Serv\memcached\memcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows下注册为服务后运行:sc.exe create Memcached_srv binpath= “d:\App_Serv\memcached\memcached.exe -d RunService -p 11211 -m 500″start= auto net start Memcached
连接和退出
telnet 127.0.0.1 11211quit
下面指定先要执行
telnet 127.0.0.1 11211
查看命令
get key查看指定key的缓存
存储命令
add key flag expire length新增指定key的缓存
set key flag expire length设置指定key的缓存。若key存在,则replace替换,否则add新增
key 缓存的键flag 标志,要求为一个正整数。用来标识数据原本的格式,以便后期对数据的处理。expire 有效期。小于30天的秒数(60*60*24*30秒),表示从设定开始,多少秒后失效。大于30天的秒数(60*60*24*30秒),表示的距离1970年1月1日多少秒后失效,常用于定时。0表示不自动失效,并不代表有效。length 缓存的值的长度(以字节为单位)
修改命令
replace key flag expire length替换指定key缓存的值
删除命令
delete key [time]删除指定key的缓存。可选参数time,表示在删除缓存后的多少秒内,不允许get,add,replace操作此key
计数命令
incr key num增加指定key的值的大小,num必须是数字 decr key num减少指定key的值的大小,num必须是数字
统计命令
stats统计memcached的运行信息
STAT pid 46673 #进程IDSTAT uptime 25336 #服务器已运行秒数STAT time 1494173893 #服务器当前unix时间戳STAT version 1.4.13 #memcached版本号STAT libevent 1.4.13-stable #libevent版本STAT pointer_size 64 #操作系统位数,64位STAT rusage_user .642902 #进程累计用户时间STAT rusage_system .303953 #进程累计系统时间STAT curr_connections 10 #当前打开连接数STAT total_connections 25 #memcached运行以来连接总数STAT connection_structures 11 #memcached分配的连接结构数STAT reserved_fds 20 #内部使用的FD数STAT cmd_get 7 #执行get命令总数STAT cmd_set 3 #执行set命令总数STAT cmd_flush #执行flush_all命令总数STAT cmd_touch #touch命令请求总数STAT get_hits 3 #get命中次数STAT get_misses 4 #get未命中次数STAT delete_misses #delete未命中次数STAT delete_hits 1 #delete命中次数STAT incr_misses #incr未命中次数STAT incr_hits #incr命中次数STAT decr_misses #decr未命中次数STAT decr_hits #decr命中次数STAT cas_misses #cas未命中次数STAT cas_hits #cas命中次数STAT cas_badval #使用擦拭次数STAT touch_hits #touch命中次数STAT touch_misses #touch未命中次数STAT auth_cmds #认证命令处理次数STAT auth_errors #认证失败数目STAT bytes_read 358 #读取字节总数STAT bytes_written 160 #写入字节总数STAT limit_maxbytes 16777216#分配的内存总数(字节)STAT accepting_conns 1 #是否已达到连接大数 1-达到 0-未达到STAT listen_disabled_num #统计当前服务器连接数曾经到达大连接数的次数,这个数应该为0或者趋近于0,如果这个数不断增长,就要小心了STAT threads 4 #当前MemCache总进程数STAT conn_yields #连接操作主动放弃数目STAT hash_power_level 16 #hash表等级STAT hash_bytes 524288 #当前hash表大小STAT hash_is_expanding #hash表正在扩展STAT expired_unfetched #已过期但未获取大对象数目STAT evicted_unfetched #一驱逐但未获取大对象数目STAT bytes 166 #当前存储占用字节数STAT curr_items 2 #当前存储的数据总个数STAT total_items 3 #启动以来存储的数据总数STAT evictions #LRU释放的对象数目STAT reclaimed #已过期的数据数目来存储新数据的数目
stats items列出所有key
STAT items:1:number 4 #该slab中对象数(不包含过期对象)STAT items:1:age 1941 #LRU队列中老对象的过期时间STAT items:1:evicted 0 #LRU释放对象数STAT items:1:evicted_nonzero 0 #设置了非0时间的LRU释放对象数STAT items:1:evicted_time 0 #后一次LRU释放的对象存在时间STAT items:1:outofmemory 0 #不能存储对象次数STAT items:1:tailrepairs 0 #修复slabs次数STAT items:1:reclaimed 0 #使用过期对象空间存储对象次数STAT items:1:expired_unfetched 0 #已过期但未获取的对象数目STAT items:1:evicted_unfetched 0 #已驱逐但未获取的对象数目
其他命令:flush_all清空所有的存储对象 缓存的命中率=命中次数/(命中次数+未命中次数)*
来源 https://www.modb.pro/db/141964
相关文章