79.redis慢查询 扩展模块及sessions 主从配置

21.18 redis慢查询日志

21.19 php安装redis扩展

21.20 redis存储session

21.21 redis主从配置

 

 

 

 

21.18 redis慢查询日志

 

1.编辑配置文件/etc/redis.conf

2.针对慢查询日志,可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢查询日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。

1000微妙=1毫秒

1000毫秒=1秒

日志的长度是比如这个日志的长度最多纪录1000条,当1001条被记录的时候,第1条会被移除

slowlog-log-slower-than 1000 //单位us(微妙),表示慢于1000ms则记录日志

slowlog-max-len 128 //定义日志长度,表示最多存128条

3.slowlog get //列出所有的慢查询日志

4.slowlog get 2 //只列出2条

5.slowlog len //查看慢查询日志条数

 

 

 

实例:

[root@axinlinux-01 ~]# vim /etc/redis.conf

slowlog-log-slower-than 10 #为方便实验,我们改为10微妙。实验种我们任何操作都是大于10微妙的

[root@axinlinux-01 ~]# killall redis-server #杀掉他重启

[root@axinlinux-01 ~]# redis-server /etc/redis.conf

[root@axinlinux-01 ~]# redis-cli -a 'aming>com' #我们上一节设置了密码

127.0.0.1:6379> SLOWLOG get #我们随便操作几个命令,然后查看慢查询日志

1) 1) (integer) 3 #这个3是第几个命令的意思

2) (integer) 1542118117

3) (integer) 17

4) 1) "get" #这个4)就是我们执行的哪个命令

2) "key3"

5) "127.0.0.1:52478"

6) ""

2) 1) (integer) 2

2) (integer) 1542118077

3) (integer) 31

4) 1) "SLOWLOG"

2) "get"

5) "127.0.0.1:52478"

6) ""

3) 1) (integer) 1

2) (integer) 1542118069

3) (integer) 12

4) 1) "SLOWLOG"

2) "log"

5) "127.0.0.1:52478"

6) ""

4) 1) (integer) 0

2) (integer) 1542118064

3) (integer) 1339

4) 1) "COMMAND"

5) "127.0.0.1:52478"

6) ""

127.0.0.1:6379> SLOWLOG get 1 #slowlog get 1,加个就是代表把最新的列出来。加2就是列出两条

1) 1) (integer) 4

2) (integer) 1542118124

3) (integer) 34

4) 1) "SLOWLOG"

2) "get"

5) "127.0.0.1:52478"

6) ""

127.0.0.1:6379> SLOWLOG len #查看慢查询日志条数

(integer) 6

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

21.19 php安装redis扩展

 

 

实验使用的是lnmp环境。如果是lamp环境是一样的安装方法

之前讲过php安装memcached的扩展模块,那php也可以安装redis的扩展模块

1.cd /usr/local/src

2.wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip #为官方的

3.unzip phpredis.zip

4.cd phpredis-develop

5./usr/local/php-fpm/bin/phpize

6../configure --with-php-config=/usr/local/php-fpm/bin/php-config

7.make

8.make install

9.vim /usr/local/php.ini//增加extension=redis.so

10./usr/local/php-fpm/bin/php -m|grep redis//看是否有redis模块

11.重启php-fpm服务

 

 

实例:

[root@axinlinux-01 ~]# cd /usr/local/src/

[root@axinlinux-01 src]# wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip

[root@axinlinux-01 src]# unzip phpredis.zip

[root@axinlinux-01 src]# cd phpredis-develop/

[root@axinlinux-01 phpredis-develop]# /usr/local/php-fpm/bin/phpize #生成configure文件

[root@axinlinux-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config

[root@axinlinux-01 phpredis-develop]# make

[root@axinlinux-01 phpredis-develop]# echo $?

0

[root@axinlinux-01 phpredis-develop]# make install

Installing shared extensions: /usr/local/php-fpm/lib/php/extensions/no-debug-non-zts-20131226/

[root@axinlinux-01 phpredis-develop]# echo $?

0

[root@axinlinux-01 phpredis-develop]# vim /usr/local/php-fpm/etc/php.ini #编辑php.ini的文件

extension=memcache.so

extension=redis.so #在memcached的下面加上这一行

[root@axinlinux-01 phpredis-develop]# /usr/local/php-fpm/sbin/php-fpm -m

[root@axinlinux-01 phpredis-develop]# /etc/init.d/php-fpm restart #使他生效

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

21.20 redis存储session

 

 

共三种方法

1. #跟memcached一样,第一种会有问题,所以不使用

vim /usr/local/php-fpm/etc/php.ini//更改或增加

session.save_handler = "redis"

session.save_path = "tcp://127.0.0.1:6379"

 

2.

或者apache虚拟主机配置文件中也可以这样配置:

php_value session.save_handler " redis" php_value session.save_path " tcp://127.0.0.1:6379" 

3.

或者php-fpm配置文件对应的pool中增加: #本次实验我们用这种方式(lnmp环境)

 

php_value[session.save_handler] = redis

php_value[session.save_path] = " tcp://127.0.0.1:6379 "

测试:

1.wgt http://study.lishiming.net/.mem_se.txt

2.mv .mem_se.txt /data/wwwroot/default/session.php

其中session.php内容可以参考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php

3.curl localhost/session.php //结果类似于1443702394<br><br>1443702394<br><br>i44nunao0g3o7vf2su0hnc5440

4.命令行连接redis,也可以查看到该key以及对应的值

5.如果想用php连接redis cluster,需要使用predis扩展

redis cluster是他的集群架构,后面会讲到。连php的时候就不要选择这个php的模块了,而是选择这个predis。predis模块是针对集群的

安装方法类似phpredis,predis扩展地址https://github.com/nrk/predis

 

 

实例:

[root@axinlinux-01 ~]# vim /usr/local/php-fpm/etc/php-fpm.d/www.conf

php_value[session.save_handler] = redis #直接在下面加入这两行即可。可以把之前的memcached注释掉。其实都是一样的配置,只不过后面的名字和IP端口不一样

php_value[session.save_path] = " tcp://127.0.0.1:6379 "

[root@axinlinux-01 ~]# vim /etc/redis.conf #为方便测试,我们先把之前的redis登录密码取消掉

#requirepass aming>com #注释即可

[root@axinlinux-01 ~]# killall redis-server

[root@axinlinux-01 ~]# redis-server /etc/redis.conf

然后测试

因为我们之前memcached的时候就已经下载过这个php的脚本了,所以我们直接curl

[root@axinlinux-01 default]# curl localhost/index.php #可以多curl几次

1542121511<br><br>1542121511<br><br>2ptjn8tik3926kcged03im7ac7 #我们可以看这些对面的key和value在redis里有没有生成

[root@axinlinux-01 default]# curl localhost/index.php

1542121513<br><br>1542121513<br><br>qb4ibjecn4ur91g1munle0jiu3

[root@axinlinux-01 default]# redis-cli #在进入redis,看是否跟我们上面curl出来的key是一样的

127.0.0.1:6379> keys *

8) "PHPREDIS_SESSION:2ptjn8tik3926kcged03im7ac7"

4) "PHPREDIS_SESSION:qb4ibjecn4ur91g1munle0jiu3"

127.0.0.1:6379> get PHPREDIS_SESSION:2ptjn8tik3926kcged03im7ac7 #我们选其中一个key,get一下,看是否能curl出来的value是一致的

"TEST|i:1542121511;TEST3|i:1542121511;"

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

21.21 redis主从配置

 

 

1.为了节省资源,我们可以在一台机器上启动两个redis服务

cp /etc/redis.conf /etc/redis2.conf

vim /etc/redis2.conf //需要修改port,dir,pidfile,logfile

2.还要增加一行。就是他的主是谁。配置redis主从的时候,主基本不用动

slaveof 127.0.0.1 6379

如果主上设置了密码,还需要增加

masterauth aminglinux>com //设置主的密码

3.启动之前不要忘记创建新的dir目录

redis-server /etc/redis2.conf

测试:在主上创建新的key,在从上查看

注意:redis主从和mysql主从不一样,redis主从不用事先同步数据,它会自动同步过去

 

 

实例:

[root@axinlinux-01 ~]# cp /etc/redis.conf /etc/redis2.conf

[root@axinlinux-01 ~]# vim /etc/redis2.conf

port 6380 #因为使用了同一台做主从,所以要在从的配置文件里修改这几个地方。与主区分开来

pidfile /var/run/redis_6380.pid

logfile "/var/log/redis2.log"

dir /data/redis2

以下为正常配置slave配置文件的

slaveof 127.0.0.1 6379 #正常配置redis主从的时候,要在slaveof相关的下面加入这一行

#正常的话要写主的ip。

#如果主使用了密码,要在# masterauth <master-password>这里写上master的密码

[root@axinlinux-01 ~]# mkdir /data/redis2 #创建slave的dir目录

[root@axinlinux-01 ~]# redis-server /etc/redis2.conf #开启

[root@axinlinux-01 ~]# ps aux |grep redis #查看服务

root 7144 0.1 0.5 147344 9772 ? Ssl 22:56 0:04 redis-server 127.0.0.1:6379

root 7710 0.2 0.5 147344 9692 ? Ssl 23:31 0:00 redis-server 127.0.0.1:6380

root 7725 0.0 0.0 112724 980 pts/0 S+ 23:32 0:00 grep --color=auto redis

[root@axinlinux-01 ~]# netstat -lntp #查看端口

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 7144/redis-server 1

tcp 0 0 127.0.0.1:6380 0.0.0.0:* LISTEN 7710/redis-server 1

[root@axinlinux-01 ~]# redis-cli -h 127.0.0.1 -p 6380 #因为主从都在一台机器上。所以要指定他的ip和端口登录

127.0.0.1:6380> set key100 111 #我们发现在slave里不能写,只能读。以下:

(error) READONLY You can't write against a read only slave.

[root@axinlinux-01 ~]# vim /etc/redis2.conf #接上,是因为在从配置文件里,自动定义了这个,从只能读不能写

slave-read-only yes

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3866149/blog/3030826

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值