
数据过期方式:
Lazy Expiration
Memcached 内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,Memcached不会在过期监视上耗费CPU时间。
LRU
Memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当内存空间不足时(无法从slab class获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。
.
安装
yum install -y memcached
systemctl start memcached

-u 指定用户
-p 监听端口
-m 分配的内存,单位M
-c 最大并发数
可以以命令脚本的形式启动,带参数启动可以自定义这四个参数
或者vim /etc/sysconfig/memcached自定义启动项目

memcached -h 查看详细命令参数
.
查看运行状态
memcached-tool 127.0.0.1:11211 stats
echo stats |nc 127.0.0.1 11211
若安装libmemcached后,也可以使用命令
memstat --servers=127.0.0.1:11211
.
memcached 命令行
telnet 127.0.0.1 11211 进入memcached
\r\n \r\n
注:\r\n在windows下是Enter键
可以是set, add, replace
set表示按照相应的存储该数据,没有的时候增加,有的时候覆盖
add表示按照相应的添加该数据,但是如果该已经存在则会操作失败
replace表示按照相应的替换数据,但是如果该不存在则操作失败。
客户端需要保存数据的key
是一个16位的无符号的整数(以十进制的方式表示)。该标志将和需要存储的数据一起存储,并在客户端get数据时返回。客户端可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
为过期的时间。若为0表示存储的数据永远不过期(但可被服务器算法:LRU 等替换)。如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
需要存储的字节数,当用户希望存储空数据时可以为0
需要存储的内容,输入完成后,最后客户端需要加上\r\n(直接点击Enter)作为结束标志。
get 读取数据
delete 删除数据

.
数据导出和导入
导出:
memcached-tool 127.0.0.1:11211 dump > data.txt
导入:
nc 127.0.0.1 11211 < data.txt
若nc命令不存在,yum install nc
注意:导出的数据是带有一个时间戳的,这个时间戳就是该条数据过期的时间点,如果当前时间已经超过该时间戳,那么是导入不进去的
.
PHP连接Memcached
先安装php的memcache扩展
cd /usr/local/src/
wget http://www.apelearn.com/bbs/data/attachment/forum/memcache-2.2.3.tgz
tar zxf 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
修改php.ini添加一行
extension="memcache.so“
检查/usr/local/php/bin/php-fpm -m
.
Memcached中存储session
编辑php.ini添加两行
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对应的pool中添加
php_value[session.save_handler] = memcache
php_value[session.save_path] = " tcp://192.168.0.9:11211 "
wget http://study.lishiming.net/.mem_se.txt
mv .mem_se.txt /usr/local/apache2/htdocs/session.php
其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php
curl localhost/session.php
类似于14437023941443702394i44nunao0g3o7vf2su0hnc5440
telnet 127.0.0.1 11211
get i44nunao0g3o7vf2su0hnc5440