安装memcached
yum install -y memcached libmemcached libevent
memcached基于libevent,可查看是否已安装libevent
rpm -qa libevent
启动memcached
systemctl start memcached
修改启动时的配置
使用命令行的形式启动memcached,并指定相应参数(/usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024)
或者修改/etc/sysconfig/memcached
vim /etc/sysconfig/memcached
查看memcached状态
memcached-tool 127.0.0.1:11211 stats 使用该命令查看memcached运行状态
主要关注get_hits、curr_items、cmd_get,get_hits/cmd_get=命中率(生成缓存信息中被点击使用的占比)
或者echo stats |nc 127.0.0.1 11211 需要安装nc工具 yum install -y nc
echo stats |nc 127.0.0.1 11211 查看运行状态
还可安装libmemcached查看
yum install -y libmemcached
memstat --servers=127.0.0.1:11211
memcached命令行
telnet 127.0.0.1 11211 使用telnet登录
set key2 0 30 2
key2为key的名称,0为flags是一个16位的无符号的整数(以十进制的方式表示),客户端可以将此标志用做特殊用途,此标志对服务器来说是不透明的。30为过期时间(0为不过期),后面的2为存储的字节数。
set表示按照相应的<key>存储该数据,没有的时候增加,有的时候覆盖;
add表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败;
replace表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败;
delete表示删除key中的值。
memcached数据导出和导入
输入数据
set name 1 0 4
1234
STORED
set age 1 0 2
20
STORED
set k1 1 0 5
abcde
STORED
quit
导出数据
memcached-tool 127.0.0.1:11211 dump > data.txt
导入命令
nc 127.0.0.1 11211 < data.txt (若nc命令不存在,需要使用yum进行安装)
systemctl restart memcached 先重启memcached,然后再导入
注意:导出的数据是带有一个时间戳的,这个时间戳就是该条数据过期的时间点,如果当前时间已经超过该时间戳,那么是导入不进去的。
要修改时间戳
date -d "+1 hour" +%s 当前时间1小时后的时间戳
vim data.txt
只修改k1和name
再导入
nc 127.0.0.1 11211 < data.txt
修改时间戳后的数据导入才生效。
php连接memcached
/usr/local/php-fpm/sbin/php-fpm -m //查看php中的扩展模块
cd /usr/local/src/
wget http://www.apelearn.com/bbs/data/attachment/forum/memcache-2.2.3.tgz
tar zxvf memcache-2.2.3.tgz
cd memcache-2.2.3
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install
安装完后会有类似这样的提示:
vim /usr/local/php-fpm/etc/php.ini
添加extension=memcache.so
检查/usr/local/php-fpm/sbin/php-fpm -m
下载测试脚本
curl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null
(1.php内容也可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/1.php)
执行脚本
/usr/local/php-fpm/bin/php 1.php
或者将1.php放到某个虚拟主机根目录下面,在浏览器访问,即可看到效果
最终可以看到数据如下:
memcached中存储session
本实例是在lamp/lnmp环境下实现
vim /usr/local/php-fpm/etc/php.ini
将session.save_handler = files修改为;session.save_handler = files 注释掉
并添加
session.save_handler = memcache
session.save_path = "tcp://192.168.0.9:11211"
若操作不成功,可在httpd.conf中对应的虚拟主机中添加
php_value session.save_handler "memcache"
php_value session.save_path "tcp://192.168.0.9:11211"
或者php-fpm.conf(/usr/local/php-fpm/etc/php-fpm.d/aming.conf)对应的pool中添加
php_value[session.save_handler] = memcache
php_value[session.save_path] = " tcp://192.168.0.9:11211 "
下载存储session的php脚本
wget http://study.lishiming.net/.mem_se.txt
(其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php)
cd /data/wwwroot/default
mv /root/.mem_se.txt 1.php
curl localhost/session.php
telnet 127.0.0.1 11211
get i44nunao0g3o7vf2su0hnc5440