memcached简单应用

来源:转载

memcached安装

安装环境:CentOS7 3.10.0-514.el7.x86_64


准备
安装扩展源:
[[email protected] ~]# yum install -y epel-release
安装所依赖的库文件:
[[email protected] ~]# yum install -y libevent-devel memcached libmemcached
memcached
[[email protected] ~]# systemctl start memcached
##重启,启动,开机启动,状态,关闭
systemctl restart memcached
systemctl start memcached
systemctl enable memcached
systemctl status memcached
systemctl stop memcached
查看监听端口:
[[email protected] ~]# netstat -lntp |grep memcached
tcp 00 0.0.0.0:112110.0.0.0:* LISTEN19658/memcache
tcp600 :::11211:::*LISTEN19658/memcache
memcached配置文件:
[[email protected] ~]# vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
#在此可以修改端口,用户和最大内存,缓存大小,而且还可以在OPTIONS=""为memcached命令增加参数(如:OPTIONS="-l 127.0.0.1",指定memcached监听的IP)
memcached命令参数

参数作用

-d启动一个守护进程
-m分配给memcached使用的内存数量,单位是MB
-u指定运行memcached的用户,如果当期是root的话,需要使用该参数指定用户
-l监听的服务器IP地址
-p设置memcached监听的端口,默认是11211
-c最大运行的并发数,默认是1024
-P设置保存memcached的pid文件查看memcached运行状态
[[email protected] ~]# memcached-tool 127.0.0.1:11211 stats
#memcached-tool IP:port stats
cmd_flush0
cmd_get0
cmd_set0
cmd_touch0
get_hits0
get_misses0
hash_bytes524288
hash_is_expanding0
hash_power_level 16
#常看参数:cmd_get、get_hits等
#cmd_get、get_hits的值的比值为命中率
使用工具(nc)查看:
[[email protected] ~]# yum install -y nc
[[email protected] ~]# echo stats |nc 127.0.0.1 11211安装libmemcached后使用:
[[email protected] ~]# memstat --servers=127.0.0.1:11211
memcached常用操作
连接memcached:
[[email protected] ~]# yum install -y telnet
[[email protected] ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
#连接完成
命令格式:

command nameset/add/replace

key查找关键字
flags客户机使用它存储关于键值对的额外信息(标记)
exptime该数据的存活时间,0表示永远
bytes存储字节数
data block存储的数据块(可直接理解为key-value结构中的value)

格式: command namekeyflagsexptimebytes /r/ndata block /r/n


command name可以是"set", "add", "replace"
"set"表示按照相应的 key 存储该数据,没有的时候增加,有的覆盖
"add"表示按照相应的 key 添加该数据,但是如果该 key 已经存在则会操作失败
"replace"表示按照相应的 key 替换数据,但是如果该 key 不存在则操作失败
key客户端需要保存数据的key
flags是一个16位的无符号的整数(以十进制的方式表示)
该标志将和需要存储的数据一起存储,并在客户端get数据时返回
客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的
exptime过期的时间
若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)
如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)
bytes需要存储的字节数(不包含最后的"/r/n"),当用户希望存储空数据时,可以为0
最后客户端需要加上"/r/n"作为"命令头"的结束标志(=Enter)。
data block :要存储的内容(在上述参数设置完毕后,enter后再输入数据)

eg:


set key1 0 0 2
12
STORED
添加一个数据
get key1
VALUE key1 0 2
12
END
#查看数据
delete key1 0
DELETED
#删除一个数据
get key1
END
quit
Connection closed by foreign host.
[[email protected] ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set adai 0 0 3
123
STORED
get adai
VALUE adai 0 3
123
END
replace adai 2 200 5
12345
STORED
#更改数据
get adai
VALUE adai 2 5
12345
END
quit
Connection closed by foreign host.
查看数据状态:
[[email protected] ~]# memcached-tool 127.0.0.1:11211 display
#Item_SizeMax_age Pages Count Full?Evicted Evict_Time OOM
196B 22s11 yes 0 00
#Item_Size项目大小(类似于块的概念),该列以递增的形式显示
php连接memcached

需要先安装PHP的memcached扩展模块。


[[email protected] src]# wget http://www.apelearn.com/bbs/data/attachment/forum/memcache-2.2.3.tgz
[[email protected] src]# tar zxvf memcache-2.2.3.tgz
[[email protected] src]# cd memcache-2.2.3/
[[email protected] src]# /usr/local/php/bin/phpize
#生成./configure文件
编译:
[[email protected] memcache-2.2.3]# ./configure --with-php-config=/usr/local/php/bin/php-config
[[email protected] memcache-2.2.3]# make && make install
安装完成后会生成一个.so(模块)文件:
[[email protected] memcache-2.2.3]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20170924/
memcache.so
然后,需要将该文件移动到一个在php.ini中指定的目录
指定该目录:
# vim php.ini
extension_dir = /usr/local/php/ext
extension = memcache.so
[[email protected] memcache-2.2.3]# /usr/local/php/bin/php -m
memcache

配置完成!


memcached共享session


修改配置文件,在 php.ini 中全局设置
session.save_handler = memcache
session.save_pah = "tcp://192.168.8.125:11211"
或者某个目录下的 .htaccess :
php_value session.save_handler "memcache"
php_value session.save_path "tcp://192.168.8.125:11211"
再或者在某个一个应用中:
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.8.125:11211");
使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

参考:
http://blog.csdn.net/ikscher/article/details/7014992

分享给朋友:
您可能感兴趣的文章:
随机阅读: