第二十一章 NoSQL(上)

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

猜你喜欢

转载自blog.csdn.net/weixin_37817498/article/details/84256822
今日推荐