缓存之memcached
Posted soft张三丰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存之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, 0 时关闭)
-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_Servmemcachedmemcached.exe -d RunService -l 127.0.0.1 -p 11211 -m 500 在windows下注册为服务后运行:sc.exe create Memcached_srv binpath= “d:App_Servmemcachedmemcached.exe -d RunService -p 11211 -m 500″start= auto net start Memcached
连接和退出
telnet 127.0.0.1 11211
quit
下面指定先要执行
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 #进程ID
STAT 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 0.642902 #进程累计用户时间
STAT rusage_system 0.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 0 #执行flush_all命令总数
STAT cmd_touch 0 #touch命令请求总数
STAT get_hits 3 #get命中次数
STAT get_misses 4 #get未命中次数
STAT delete_misses 0 #delete未命中次数
STAT delete_hits 1 #delete命中次数
STAT incr_misses 0 #incr未命中次数
STAT incr_hits 0 #incr命中次数
STAT decr_misses 0 #decr未命中次数
STAT decr_hits 0 #decr命中次数
STAT cas_misses 0 #cas未命中次数
STAT cas_hits 0 #cas命中次数
STAT cas_badval 0 #使用擦拭次数
STAT touch_hits 0 #touch命中次数
STAT touch_misses 0 #touch未命中次数
STAT auth_cmds 0 #认证命令处理次数
STAT auth_errors 0 #认证失败数目
STAT bytes_read 358 #读取字节总数
STAT bytes_written 160 #写入字节总数
STAT limit_maxbytes 16777216#分配的内存总数(字节)
STAT accepting_conns 1 #是否已达到连接最大数 1-达到 0-未达到
STAT listen_disabled_num 0 #统计当前服务器连接数曾经到达最大连接数的次数,这个数应该为0或者趋近于0,如果这个数不断增长,就要小心了
STAT threads 4 #当前MemCache总进程数
STAT conn_yields 0 #连接操作主动放弃数目
STAT hash_power_level 16 #hash表等级
STAT hash_bytes 524288 #当前hash表大小
STAT hash_is_expanding 0 #hash表正在扩展
STAT expired_unfetched 0 #已过期但未获取大对象数目
STAT evicted_unfetched 0 #一驱逐但未获取大对象数目
STAT bytes 166 #当前存储占用字节数
STAT curr_items 2 #当前存储的数据总个数
STAT total_items 3 #启动以来存储的数据总数
STAT evictions 0 #LRU释放的对象数目
STAT reclaimed 0 #已过期的数据数目来存储新数据的数目
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清空所有的存储对象 缓存的命中率=命中次数/(命中次数+未命中次数)*100%
以上是关于缓存之memcached的主要内容,如果未能解决你的问题,请参考以下文章
Nginx使用教程:使用Nginx缓存之Memcached缓存