主要启动参数?启动方式:?-d ? 以守护程序(daemon)方式运行?-u root ? 指定用户,如果当前为 root ,需要使用此参数指定用户?-P /tmp/a.pid? 保存PID到指定文件?内存设置:?-m 1024 ? 数据内存数量,不包含memcached本身占用,单位为 MB?-M ? 内存不够时禁止LRU,报错?-n 48? 初始chunk=key+suffix+value+32结构体,默认48字节?-f 1.25 ? 增长因子,默认1.25?-L? 启用大内存页,可以降低内存浪费,改进性能?连接设置:?-l 127.0.0.1 ? 监听的 IP 地址,本机可以不设置此参数?-p 11211 ? TCP端口,默认为11211,可以不设置?-U 11211? UDP端口,默认为11211,0为关闭?并发设置:?-c 1024? 最大并发连接数,默认1024,最好是200?-t 4? 线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用?-R 20? 每个event连接最大并发数,默认20?-C? 禁用CAS命令(可以禁止版本计数,减少开销)如:
/usr/local/bin/memcached -d -u nobody -m 1024 -p 11210?-l 10.11.12.70 -P /opt/memcached/pid/m11210.pid
memcached调试?-v? +输出error/warning?-vv? +输出命令/响应?-vvv? +输出内部状态 存储命令
格式:
<command> <key> <flags> <exptime> <bytes> [<version>]\r\n
<datablock>\r\n
<status>\r\n
repalce只有数据存在时进行替换
append往后追加:append <key> datablock <status>?
prepend往前追加:prepend <key> datablock <status>
cas按版本号更改key字符串,<250个字符,不包含空格和控制字符flags客户端用来标识数据格式的数值,如json,xml,压缩等exptime存活时间s,0为永远,<30天60*60*24*30为秒数,>30天为unixtimebytesbyte字节数,不包含\r\n,根据长度截取存/取的字符串,可以是0,即存空串datablock文本行,以\r\n结尾,当然可以包含\r或\nstatusSTORED/NOT_STORED/EXISTS/NOT_FOUNDERROR/CLIENT_ERROR/SERVER_ERROR服务端会关闭连接以修复
读取命令
格式:
<command> <key>*\r\n
VALUE <key1> <flags> <bytes> [<version>]\r\n
<datablock>\r\n
…
VALUE <keyn> <flags> <bytes> [<version>]\r\n
<datablock>\r\n
END\r\n
command: get普通查询,gets用于查询带版本的值
检查存储命令cas
cas即check and set,只有版本号相匹配时才能存储,否则返回EXISTS
设计意图:解决多客户端并发修改同一条记录的问题,防止使用经过改变了的value/key对
计数命令incr/decr
格式:
incr/decr<key> <int>
<int>
要求:key必须存在,value必须是数字
删除命令delete
格式:
delete <key> [<time>]
DELETE\r\n
time: 秒数或Unixtime,在time时间内不能add或replace,但能set,不能get。过期后才能够重新set有效并能get
统计命令stats
格式:
stats [<args>]\r\n
STAT <name> <value>\r\n
END\r\n
stats统计项
stats settings查看设置
stats items数据项统计
stats sizes对象数量统计
stats slabs区块统计
其他命令?version?flush_all?quit?echo/nc快捷方式