1.memcache安装流程
1.1安装依赖
yum install libevent libevent-devel nc telnet -y
rpm -qa libevent libevent-devel telnet nc
1.2操作流程
rpm -qa libevent libevent-devel nc telnet
rpm -qa memcached
yum install memcached -y
1.3启动memcached
which memcached <=== 查看memcached命令路径
memcached -m 16m -p 11211 -d -u root -c 8192 <==启动第一个memcached实例
如果启动多实例或新开一个实例 只需要新开一个端口
1.4检查启动结果
lsof -i :11211 <====查看启动情况
netstat -lntup | grep 11211
ps -ef | grep memcached | grep -v grep #<===查看memcached进程
1.5 加入开启自启动
echo ‘/usr/bin/memcached -m 16m -p 11211 -d -u root -c 8192’ >> /etc/rc.d/rc.local
2 参数说明:
-m是用多大内存 指定内存
-p端口 用哪个端口提供服务
-d表示允许后台运行
-c表示并发连接数
memcached -h <===查看memcache用到得参数
具体说明如下:
-I <ip_addr>: 指定进程监听的地址
-d: 以服务模式运行
-u <username>:以指定的用户身份运行memcached进程
-m <num>: 用于缓存数据的最大内存空间。单位为MB 默认为64MB
-c <num>: 最大支持的并发连接数,默认为1024
-p <num>: 指定监听的TCP端口,默认为11211
-U <num>: 指定监听的UDP端口,默认11211,0表示关闭UDP端口
-t <threads>:用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效
-f <num>:设定Slb Allocator定于预先分配内存空间大小固定的块时使用的增长因子;
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间
-n: 指定最小的slab chunk大小;单位是字节;
-S: 启动sasl进行用户认证;
-s: 如果只在本地通信。可以监听在某个UNIX套接字上
-r: 设定最大核心文件大小限制
-P:指定PID文件
-L:试图使用最多的内存空间
-C:禁用CAS
-
memcached启动命令相关参数说明
进程与连接设置
-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 chunksize增长因子,默认1.25
-L 启用大内存页,可以降低内存浪费,改进性能
并发连接设置
-c 最大的并发连接数,默认是1024
-t 线程数,默认4.由于memcached采用NIO,所以太多线程作用不大
注意: 重要参数-M -d -p -
向memcached中写入数据
printf “set key 0 0 5\r\nvalue\r\n”|nc 127.0.0.1 11211
printf “set ouyang 0 0 6\r\nouyang\r\n”|nc 127.0.0.1 11211
STORED <=== 出现STORED表示成功添加key对于的数据
set 命令的字节是6 那么后面就要6个字符(字节)。否则插入数据就会不成功set key1 0 0 6
-
memcache和mysql的常见命令对比
MySQL数据库管理 Memcached管理
insert语句 set命令
select语句 get命令
delete语句 delete语句
update语句 replace语句
6.memcached相关命令详细说明
command name
set 无论如何都进行写入数据,会覆盖老数据
add 只有对应数据不存在时才添加数据
replace 只有数据存在时进行替换数据
append往后追加: appenddatablock?
prepend往前追加:prependdatablock
cas按版本号更改
key 普通字符串,要求小于250个字符,不包含空格和控制字符 ;
flags 客户端用来标识数据格式的数据,如json,xml,压缩等
exptime 存活时间s 0为永远,小于30天, 606024*30为秒数,大于30天为
unixtime
bytes bytes 字节数,不包含\r\n,根据长度截取存/取得字符串,可以是0,即存空串
datablock 文本行,以\r\n结尾,当然可以包含\r或\n
status STORED/NOT_STORED/EXISTS/NOT_FOUND
ERROR/CLIENT_ERROR/SERVER_ERROR服务端会关闭连接以修复
7.telnet 连接memcache 并操作memcache
nc连接操作memcache
删除后再取值:
-
当启动了多个实例memcached使用killall 或pkill 的方式就会同时都关闭了!此时最好在启动时增加-P参数指定固定的pid文件,这样便于管理不同的实例。
memcached -m 16m -p 11211 -d -u root -c 8192 -P /var/run/11211.pid
memcached -m 16m -p 11211 -d -u root -c 8192 -P /var/run/11211.pid
ps -ef | grep memcache| grep -v grep此时,可以通过kill命令关闭memcached
killcat /var/run/11211.pid
-
监控memcache服务是否正常,模拟用户(web客户端)检测
使用nc命令加上set/get 来模拟检测,以及监控响应及命中率
10.企业工作场景中如何配置memcached?
在企业实际工作中,一般是开发人员提出需求,说要部署一个memcached数据缓存。运维人员接到了这个不确定的需求,需要深入和开发人员沟通,进而确定内存要指定多大,或者和开发人员商量根据具体业务有多少数据指定内存缓存的大小。还要确定业务的重要性,进而决定是否采取负载均衡,分布式缓存集群等架构,最后确定使用多大的并发连接数等。
11.php中安装memcache通常为:
1.看phpinfo信息
2.下载响应版本php的memcache扩展
3.重启php
4.编写测试memcache测试脚本