Memcached是一个高性能分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高数据库驱动网站的速度。Memcached基于一个存储键/值对的HashMap。
为了提高性能,Memcached中保存的数据都存储在Memcached内置的内存存储空间中。由于数据仅存在内存中,因此重启Memcached、重启操作系统会导致全部数据消失。另外,内存容量达到指定值后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。Memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
安装
安装Memcached,可以使用源码安装或自动安装(apt-get、yum、portmaster),我们只讲如何使用yum安装Memcached,其它安装方式请上网搜索。
使用yum安装Memcached:
安装命令 yum -y install memcached
启动和停止命令 service memcached start|stop
Memcached依赖于libevent库,这些依赖yum都会自动安装。
如果安装缺少其它支持,可以使用以下命令
yum groupinstall "Development Tools"
连接
可以通过telnet命令并指定主机IP和端口来连接Memcached服务。语法如下:
telnet HOST PORT
命令中的HOST和PORT为运行Memcached服务的IP和端口。
示例如下:
1 | telnet 127.0.0.1 11211 |
Memcached缺乏认证以及安全管制,因此应该将Memcached服务器放置在防火墙后。
管理
启动Memcachd
启动Memcached服务
/usr/local/memcached/bin/memcached -d -m 64 -I 20m -u root -l 192.168.4.86 -p 11211 -c 1024 -P /tmp/memcached.pid
-d
参数有如下几个选项,可以使用-d
参数启动和关闭Memcached而不用使用pid文件。
-d install
安装Memcached服务-d uninstall
卸载Memcached服务-d start
启动Memcached服务-d restart
重启Memcached服务-d stop
停止Memcached服务-d shutdown
停止Memcached服务
Memcached常用选项如下表格:
选项 | 说明 |
---|---|
-d | 指定Memcached进程作为一个守护进程启动 |
-m<num> |
指定分配给Memcached使用的内存,单位是MB |
-u<username> |
运行Memcached的用户 |
-l<ip_addr> |
监听的服务器IP地址,如果有多个地址,使用逗号分隔,格式可以为“IP地址:端口号”,例如,-l指定192.168.0.184:19830,192.168.0.195:13542;端口号也可以通过-p选项指定 |
-p<num> |
Memcached监听的端口,要保证该端口号未被占用 |
-c<num> |
设置最大运行的并发连接数,默认是1024 |
-R<num> |
为避免客户端饿死,对连续达到的客户端请求数设置一个限额,如果超过该设置,会选择另一个连接来处理请求,默认为20 |
-k | 设置锁定所有分页的内存,对于大缓存应用场景,需谨慎使用该选项 |
-P | 保存Memcached进程的pid文件 |
-s<file> |
指定Memcached用于监听的UNIX socket文件 |
-a<perms> |
设置-s选项指定的UNIX socket文件权限 |
-U<num> |
指定监听UDP的端口,默认11211,0表示关闭 |
-M | 当内存使用超出配置值时,禁止自动清除缓存中的数据项,此时Memcached不可用,直到内存被释放 |
-r | 设置产生的core文件大小 |
-f<factor> |
用于计算缓存数据内存块大小的乘数因子,默认是1.25 |
-n | 为缓存数据线的key、value、flag设置最小分配字节数,默认是48B |
-C | 禁用CAS |
-h | 显示Memcached版本和摘要信息 |
-v | 输出警告和错误信息 |
-vv | 输出信息比-v更详细:不仅输出警告和错误信息,也输出客户端请求和相应信息 |
-i | 输出libevent和Memcached的licenses信息 |
-t<threads> |
指定用来处理请求的线程数,默认为4 |
-D<char> |
用于统计报告中Key前缀和ID之间的分隔符,默认是冒号“:” |
-L | 尝试使用大内存分页(pages) |
-B<proto> |
指定使用的协议,默认行为是自行协商(autonegotiate),可能使用的选项有auto、ascii、binary |
-I<size> |
覆盖默认的STAB页大小,默认是1MB |
-F | 禁用flush_all 命令 |
-o<options> |
指定逗号分隔的选项,一般用于扩展或实验性质的选项 |
##### 停止Memcached | |
停止Memcached有两种方式,一是杀掉Memcached的进程,二是使用-d 参数关闭Memcached |
杀掉Memcached进程
查询Memcached进程号
ps -ef | grep memcached
然后杀掉Memcached进程
kill -9 <PID>
-9
表示强制杀掉进程或者如果有Memcached进程的pid文件,则不需要查询Memcached进程号,直接杀掉Memcached进程的pid文件:
1
kill -9 `cat /tmp/memcached.pid`
使用
-d
参数关闭Memcached1
/usr/local/memcached/bin/memcached -u root -d stop
命令
stats命令
get命令
set命令
delete命令
add命令
replace命令
append命令
prepend命令
incr命令
decr命令
flush_all命令
version命令
quit命令