21.1 NoSQL介绍
21.2 memcached介绍
数据结构简单(k-v),数据存放在内存里。memcached 不支持持久化,数据落地。每当memcached服务重启或者重启服务器,数据就会丢失。但可以定时来备份来让数据落地
21.3 安装memcached
使用yum下载安装
yum -y install memcached
想下载最新版本可以去官网上下载源码包,由于memcached是基于libevent,因此,当你yum安装memcached时就已经安装libevent
启动memcached服务
systemctl start memcached.service
启动参数-u
指定运行memcached服务的用户-p
执行监听端口-m
指定内存大小 单位M-c
指定最大并发数
启动参数配置文件在/etc/sysconfig/memcached
更改启动参数配置文件
vim /etc/sysconfig/memcached
PORT="11211" ##端口
USER="memcached" ##用户
MAXCONN="1024" ##最大并发数
CACHESIZE="64" ##分配内存大小
OPTIONS=""
21.4 查看memcached状态
使用memcached-tool工具来查看memcached状态
memcached-tool 127.0.0.1:11211 stats
#127.0.0.1:11211 Field Value
accepting_conns 1
auth_cmds 0
auth_errors 0
bytes 0
bytes_read 14
bytes_written 1024
cas_badval 0
cas_hits 0
cas_misses 0
cmd_flush 0
cmd_get 0
cmd_set 0
cmd_touch 0
conn_yields 0
connection_structures 11
curr_connections 10
curr_items 0
decr_hits 0
decr_misses 0
delete_hits 0
delete_misses 0
evicted_unfetched 0
evictions 0
expired_unfetched 0
get_hits 0
get_misses 0
hash_bytes 524288
hash_is_expanding 0
hash_power_level 16
incr_hits 0
incr_misses 0
libevent 2.0.21-stable
limit_maxbytes 67108864
listen_disabled_num 0
pid 1275
pointer_size 64
reclaimed 0
reserved_fds 20
rusage_system 0.039859
rusage_user 0.028470
threads 4
time 1534201319
total_connections 12
total_items 0
touch_hits 0
touch_misses 0
uptime 1050
version 1.4.15
在生产环境中要留意 curr_items
暂存的项目 cmd_get
表示总的get次数,get_hits
表示get的总命中次数,命中率 = get_hits/cmd_get
。
使用nc命令来查看memcached状态
yum -y install nc
echo stats |nc 127.0.0.1 11211
STAT pid 1275
STAT uptime 2058
STAT time 1534202327
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.050910
STAT rusage_system 0.070002
STAT curr_connections 10
STAT total_connections 13
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 20
STAT bytes_written 2053
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 0
END
使用memstats命令来查看memcached状态
先安装 libmemcached
yum -y install libmemcached
memstat --servers=127.0.0.1:11211
Server: 127.0.0.1 (11211)
pid: 1275
uptime: 2277
time: 1534202546
version: 1.4.15
libevent: 2.0.21-stable
pointer_size: 64
rusage_user: 0.056080
rusage_system: 0.077110
curr_connections: 10
total_connections: 14
connection_structures: 11
reserved_fds: 20
cmd_get: 0
cmd_set: 0
cmd_flush: 0
cmd_touch: 0
get_hits: 0
get_misses: 0
delete_misses: 0
delete_hits: 0
incr_misses: 0
incr_hits: 0
decr_misses: 0
decr_hits: 0
cas_misses: 0
cas_hits: 0
cas_badval: 0
touch_hits: 0
touch_misses: 0
auth_cmds: 0
auth_errors: 0
bytes_read: 37
bytes_written: 3098
limit_maxbytes: 67108864
accepting_conns: 1
listen_disabled_num: 0
threads: 4
conn_yields: 0
hash_power_level: 16
hash_bytes: 524288
hash_is_expanding: 0
bytes: 0
curr_items: 0
total_items: 0
expired_unfetched: 0
evicted_unfetched: 0
evictions: 0
reclaimed: 0
总结三种查看memcache状态命令
memcached-tool IP:端口 stats
echo stats |nc IP 端口
memstat --servers=IP:端口
21.5 memcached命令行
使用Telnet进入memcached
telnet 127.0.0.1 11211
退出Telnet按Ctrl+]再输入quit撤销按Ctrl+退格键
添加键
set key1 0 100 2 ## 0为标记 100为存储时间 2为2位数abSTORED
获得键对应的值
get key1
VALUE key1 0 2
ab
END
替换值
replace key1 0 1000 3 ##replace和set一样也要输入<flags> <exptime> <bytes>
123
STORED
删除键
delete key1
DELETED
21.6 memcached数据导出和导入
由于memcached在重启服务或者重启机器就会把数据丢掉,因此需要把数据进行备份。
使用memcached-tool命令把数据导出
格式:memcached-tool IP:端口 dump > 备份文件
vim data.txt 更改时间戳
查看之前存储的数据
通过时间戳找出对应的时间。因为我们装置设定数据的过期时间为0,永不过期。但是导出数据就会把创建数据的时间为过期时间,因此要把时间改一改,不然导入数据就会出问题
21.7 php连接memcached
进入src目录并下载解压memcache
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
进入memcache目录下并生成configure文件
cd memcache-2.2.3
/usr/local/php-fpm/bin/phpize
这里是缺少autoconf导致的因此安装autoconf再来phpize
yum install -y autoconf
/usr/local/php-fpm/bin/phpize用来生成configure文件
初始化
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make && make install
查看模块
vim /usr/local/php/etc/php.ini
extension=memcache.so
测试
下载一个php的测试页面看是否支持php来操作memcache
https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/1.php
curl www.apelearn.com/study_v2/.memcache.txt > 1.php 2>/dev/null
21.8 memcached中存储session
vim /usr/local/php-fpm/etc/php.ini
注释掉 session.save_handler = files
它表示session以文件的形式存在tmp
目录下
编辑php-fpm.conf对应的pool
php_value[session.save_handler] = memcache
php_value[session.save_path] = "tcp://192.168.93.128:11211"
测试
下载一个php测试页面看memcache是否存储了session
代码内容在https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php
wget http://study.lishiming.net/.mem_se.txt
cp .mem_se.txt /var/wwwroot/aming.com/index.php