memcached
标签: linux
笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流
环境
[root@cache01 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@cache01 ~]# uname -r
2.6.32-642.el6.x86_64
[root@cache01 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
所需工具
[root@cache01 ~]# rpm -qa libevent nc telnet
nc-1.84-24.el6.x86_64
libevent-1.4.13-4.el6.x86_64
telnet-0.17-48.el6.x86_64
安装
[root@cache01 ~]# yum install memcached -y
[root@cache01 ~]# rpm -qa memcached
memcached-1.4.4-5.el6.x86_64
[root@cache01 ~]# which memcached
/usr/bin/memcached
服务相关命令
启动
[root@cache01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192
[root@cache01 ~]# lsof -i :11211
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 1851 root 26u IPv4 11897 0t0 TCP *:memcache (LISTEN)
memcached 1851 root 27u IPv6 11898 0t0 TCP *:memcache (LISTEN)
memcached 1851 root 28u IPv4 11901 0t0 UDP *:memcache
memcached 1851 root 29u IPv6 11902 0t0 UDP *:memcache
说明
-m #指定使用内存大小,默认64
-p #指定提供服务的端口,默认11211,可省略
-d #demo模式
-u #指定用户
-c #并发连接数,默认1024
启用多实例
重新启动一个端口号不一样的进程即可
[root@cache01 ~]# memcached -m 16m -p 11212 -d -u root -c 8192
[root@cache01 ~]# ps -ef|grep memcached
root 1851 1 0 19:07 ? 00:00:00 memcached -m 16m -p 11211 -d -u root -c 8192
root 1869 1 0 19:12 ? 00:00:00 memcached -m 16m -p 11212 -d -u root -c 8192
加入开机自启动
echo "memcached -m 16m -p 11211 -d -u root -c 8192" >>/etc/rc.local
echo "memcached -m 16m -p 11212 -d -u root -c 8192" >>/etc/rc.local
[root@cache01 ~]# tail -2 /etc/rc.local
memcached -m 16m -p 11211 -d -u root -c 8192
memcached -m 16m -p 11212 -d -u root -c 8192
相关参数
#进程与连接设置
-d #以守护进程(daemon)方式运行服务
-u #指定运行memcached的用户,如果当前用户为root,需要使用此参数指定用户
-l #指定memcached进程监听的服务器IP地址,可以不设置此参数。
-p #指定memcached服务监听TCP端口号。默认为11211.
-P #设置保存memcached的pid文件($$),保存PID到指定文件
#内存相关设置
-m #指定memcached服务可以缓存数据的最大内存,默认为64MB
-M #memcached服务内存不够时禁止LRU,如果内存满了会报错
-n #为key+value+flags分配的最小内存空间,默认48字节
-f #chunk size增长因子,默认1.25
-L #启用大内存页,可以降低内存浪费,改进性能
#并发连接设置
-c #最大并发连接数,默认是1024
-t #线程数,默认4.由于memcached采用NIO,所以太多线程作用不大。
-R #每个event最大请求数,默认20
-C #禁用CAS(可以禁止版本计数,减少开销)
#调试参数
-v #打印较少的errors/warnings
-vv #打印非常多调试信息和错误输出到控制台,也打印客户端命令及响应
-vvv #打印极多的调试信息和错误输出,也打印内部状态转变
向memcached中写入数据
通过printf配合nc向memcached中写入数据
| MySQL数据库管理 | memcached管理 |
|---|---|
| MySQL的insert语句 | memcached的set命令 |
| MySQL的select语句 | memcached的get命令 |
| MySQL的delete语句 | memcached的delete命令 |
| MySQL的update语句 | memcached的replace命令 |
相关命令详解
命令名
set 无论如何都进行写入数据,会复盖老数据
add 只有对应数据不存在时才添加数据
replace 只有数据存在时进行替换数据
append往后追加:appenddatablock ?
prepend往前追加:prependdatablock
cas 按版本号更改
参数
key 普通字符串,要求小于250个字符,不包含空格和控制符
flags 客户端用来标识数据格式的数值,如json,xml,压缩等
exptime 存活时间s,0位永远,小于30天,606024*30为秒数,大于30天为unixtime
bytes byte字节数,不包含\t\n,根据长度截取存/取的字符串,可以是0,即存空串
status STORED/NOT_STORED/EXISTS/NOT_FOUND
ERRORR/CLIENT_ERROR/SERVER_ERROR服务端会关闭连接以修复
用telnet测试写入、读取、删除
[root@cache01 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set user01 0 0 7 #set写入,user01表示key值,0表示flags,0,过期时间,字节数
oldgirl # value
STORED
get user01 #读取
VALUE user01 0 7
oldgirl
END
delete user01 #删除
DELETED
get user01
END
quit
Connection closed by foreign host.
用printf ,nc测试增、删、改、查
[root@cache01 ~]# printf "set key1 0 0 6\r\noldboy\r\n"|nc 127.0.0.1 11211
STORED
[root@cache01 ~]# printf "get key1\r\n"|nc 127.0.0.1 11211
VALUE key1 0 6
oldboy
END
[root@cache01 ~]# printf "replace key1 0 0 6\r\noldgir\r\n"|nc 127.0.0.1 11211
STORED
[root@cache01 ~]# printf "get key1 0 0 6\r\n"|nc 127.0.0.1 11211
VALUE key1 0 6
oldgir
END
[root@cache01 ~]# printf "delete key1\r\n"|nc 127.0.0.1 11211
DELETED
运行多实例时的关闭方法
[root@cache01 ~]# memcached -m 16m -p 11211 -d -u root -c 8192 -P /var/run/11211.pid #大写字母P把进程号放入文件
[root@cache01 ~]# ps -ef|grep memcached
root 25099 1 0 00:04 ? 00:00:00 memcached -m 16m -p 11211 -d -u root -c 8192 -P /var/run/11211.pid
root 25106 25015 0 00:04 pts/0 00:00:00 grep memcached
[root@cache01 ~]# kill `cat /var/run/11211.pid`
[root@cache01 ~]# ps -ef|grep memcached
root 25112 25015 0 00:05 pts/0 00:00:00 grep memcached
应用
确定内存要指定多大,根据具体业务有多少数据指定内存缓存大小。确定业务的重要性,进而决定是否采取负载均衡、分布式缓存集群等架构,确定使用多大的并发连接数等。最后启动服务,做好监控,开机自启动。
浙公网安备 33010602011771号