CnSwift - 雨燕

agile development - 敏捷开发

Memcached内存数据库

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
2
3
4
5
6
7
8
9
10
11
12
13
telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set foo 0 0 3 // 保存命令
bar // 数据
STORED // 结果
get foo // 取得命令
VALUE foo 0 3 // 数据
bar // 数据
END // 结束行

quit

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
  1. 杀掉Memcached进程

    查询Memcached进程号 ps -ef | grep memcached

    然后杀掉Memcached进程 kill -9 <PID>

    -9表示强制杀掉进程

    或者如果有Memcached进程的pid文件,则不需要查询Memcached进程号,直接杀掉Memcached进程的pid文件:

    1
    kill -9 `cat /tmp/memcached.pid`
  2. 使用-d参数关闭Memcached

    1
    /usr/local/memcached/bin/memcached -u root -d stop

    命令

    stats命令
    get命令
    set命令
    delete命令
    add命令
    replace命令
    append命令
    prepend命令
    incr命令
    decr命令
    flush_all命令
    version命令
    quit命令

PHP7安装Memcached扩展

更多精彩内容,请关注公众号 Golang语言开发栈公众号二维码
感谢赞赏.

Welcome to my other publishing channels