1.memcached命令行
yum install -y telnet
telnet 127.0.0.1 11211 //进入到nosql
set命令用来存储数据
set key2 0 30 2 // key2是key的名字(memcached属于key valcue所以要一个key和value),最后一个2表示 要写(存)的数值是2位的
第一个key2写入 12两位,stored保存,第二个key1要写3位的,写了12两位没反应是错误的。后面再写三位也出错了
所以指定了3位 就要写三位。
虽然已经显示stored,但是不知道是否保存了。用get key1查看
显示END 并没有数据,是因为中间的20意义为20秒后过期,数据已经过期了自然就看不到了。
memcached语法规则:
输入错误时候清空ctrl+u,退格要加ctrl键
注:\r\n在windows下是Enter键
set表示按照相应的
add表示按照相应的
replace表示按照相应的
需要存储的内容,输入完成后,最后客户端需要加上\r\n(直接点击Enter)作为结束标志。
试验例:
注意替换的时候如果出现NOT_STORED 那就是数据已经过期了,替换失败。
2.memcached数据导出和导入
比如重启服务时最好导出一下,重启结束后导入。
存储几条数据作为实验:
退出telenet,ctrk+】,然后quit
memstat --servers=127.0.0.1:11211 查状态,有13个项目等等,之前的操作
导出:
memcached-tool 127.0.0.1:11211 dump > data.txt
只导出来三个,其他都过期了,可以重定向到其他文件里。
导入:
nc 127.0.0.1 11211 < data.txt
失败,因为是add里面已经有了不会去覆盖。只能重启memcached把数据清空。
systemctl restart memcached //重启服务
再导入就成功了。
再进入telent发现name等值没了,因为导出的数据是带有一个时间戳的,意思是过这个时间点就会过期,所以导入前可以vim data.txt把时间戳的值改大一点( 注意:导出的数据是带有一个时间戳的,这个时间戳就是该条数据过期的时间点,如果当前时间已经超过该时间戳,那么是导入不进去的)
在data.txt里 加一个小时的时间戳 就可以成功了。
3.php连接memcached
里还没有memcache的模块
先安装php的memcache扩展
cd /usr/local/src/
weget 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 //生成config文件
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install //编译
安装完后会有类似这样的提示:Installing shared extensions: /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/
然后修改php.ini添加一行extension="memcache.so“,放到扩展模块的区域比较好
检查/usr/local/php-fpm/bin/php -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放到某个虚拟主机根目录下面,在浏览器访问,即可看到效果
最终可以看到数据如下:
[0] => aaa
[1] => bbb
[2] => ccc
[3] => ddd
4.Memcached中存储session
本实例是在lamp/lnmp环境下实现
编辑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
类似于1443702394
1443702394
i44nunao0g3o7vf2su0hnc5440
telnet 127.0.0.1 11211
get i44nunao0g3o7vf2su0hnc544