学习Linux的第六十一天
redis慢查询日志
Redis慢查询日志是一个记录超过指定执行时间的查询的系统。 这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间(这是唯一在命令执行过程中线程被阻塞且不能同时处理其他请求的阶段)
慢查询的配置参数
slowlog-max-len
slowlog-log-slower-than
slowlog-max-len
slowlog-max-len 是慢查询日志的长度。实际上,Redis使用了一个列表来存储慢查询日志。Redis 使用了一个List 实现了一个先进先出的队列。当 第三阶段 执行的命令符合慢查询设置的时间,那么这个命令就会被插入到这个队列当中。这个 List 是一个固定的长度,其次是保存在内存当中。
slowlog-log-slower-than
slowlog-log-slower-than就是那个预设阈值,它的单位是微秒(1秒=1000毫秒=1000000微秒),默认值10000。slowlog-log-slower-than 告诉Redis命令的执行时间超过多少微秒将会被记录。 请注意,使用负数将会关闭慢查询日志,而值为0将强制记录每一个命令。
也就是 slowlog-log-slower-than=0,那么系统会记录所有的命令;如果slowlog-log-slower-than<0,那么对任何命令都不会记录。
查看当前系统此参数的配置
127.0.0.1:6379> config get slowlog-max-len
- “slowlog-max-len”
- “128”
127.0.0.1:6379> config get slowlog-log-slower-than - “slowlog-log-slower-than”
- “10000”
127.0.0.1:6379>
慢查询 推荐 参数设置
slowlog-max-len 默认是128,不要设置过小,通常设置 1000。
slowlog-log-slower-than 默认是10毫秒, 我们知道redis 是基于内存的,内存的速度特别快,因此这里推荐设置1毫秒。
定期做 慢查询 的持久化。我们知道 慢查询是先进先出的,因此当数量到达一定的长度,会有一些慢查询会丢失。因此定期 将慢查询 持久化到 数据库,方便我们日后分析。
PHP中使用redis – 安装扩展模块
cd /usr/local/src
wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip
unzip phpredis.zip
cd phpredis-develop
/usr/local/php-fpm/bin/phpize
./configure --with-php-config=/usr/local/php-fpm/bin/php-config
make
make install
vim /usr/local/php.ini//增加extension=redis.so
/usr/local/php-fpm/bin/php -m|grep redis//看是否有redis模块
重启php-fpm服务
PHP中使用redis-存储session
方式一 (Apache)
在Apache虚拟主机配置文件中添加如下配置
php_value session.save_handler “redis” php_value session.save_path “tcp://127.0.0.1:6379”
方法二
vim /usr/local/php-fpm/etc/php.ini增加以下内容
方式三
在php-fpm配置文件对应的pool中增加
php_value[session.save_handler] = redis php_value[session.save_path] = “tcp://127.0.0.1:6379”
测试把session存储到redis中
(1)完成上述添加后,重启php-fpm服务
(2)下载测试脚本wget http://study.lishiming.net/.mem_se.txt
(3)mv /root/.mem_se.txt /data/wwwroot/default/1.php
Redis主从配置
拷贝一份redis配置文件
[[email protected] default]# cp /etc/redis.conf /etc/redis2.conf
更改配置文件的端口号,pidfile,logfile,dir
port 6380
pidfile /var/run/redis_6380.pid
logfile “/tmp/logs/redis2.log”
dir /data/redis2
这些修改完,还要增加主的IP端口号,配置主从的时候,主基本上不变,但是要在从上配置主是谁
创建/data/redis2目录,目录创建完后,就可以启动了
[[email protected] default]# redis-server /etc/redis2.conf
启动两个redis服务,端口号一个是6379,一个端口号是6380
[[email protected] default]# ps aux |grep redis
root 3165 0.1 0.9 147304 9828 ? Ssl 09:23 0:03 redis-server 127.0.0.1:6379
root 3293 7.5 0.9 147304 9728 ? Ssl 10:06 0:00 redis-server 127.0.0.1:6380
root 3300 0.0 0.0 112680 976 pts/0 R+ 10:06 0:00 grep --color=auto redis
登录到redis2服务查看
[[email protected] default]# redis-cli -h 127.0.0.1 -p 6380
127.0.0.1:6380>
127.0.0.1:6380> keys *
- “set3”
- “set6”
- “list1”
- “hset1”
- “set1”
- “mykey”
- “set5”
- “set2”
- “set4”
- “zset1”
- “list2”
- “hash1”
- “k3”
- “k1”
127.0.0.1:6380> CONFIG GET dir - “dir”
- “/data/redis2”
127.0.0.1:6380> CONFIG GET dbfilename - “dbfilename”
- “dump.rdb”
配置文件中还有一个不能删除的命令
这条写上去,就从只能读,不能写
redis主从配置还是比较方便的,redis主从不用像MySQL一样,事先将两数据库的数据先同步,才能进行主从。redis可以事先不用同步数据库,它自己会进行同步。redis从只能读。