实验环境
操作系统: ubuntu-16.04-x64
redis版本: 4.0.9
慢查询
Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度。
配置参数
与慢查询相关的配置参数有两项:
- slowlog-log-slower-than
慢查询的预设阈值,单位为微妙,默认为10000即10ms。当一条命令的执行时间超过了slowlog-log-slower-than的值后它将被记录到慢查询日志中。 - slowlog-max-len
慢查询日志的最大条数,默认为128。redis慢查询日志存储在内存的队列中,按照先进先出的原则,如果队列满了,则老的日志会被新的日志覆盖。
配置方式:
- 修改配置文件redis.conf。
- 动态配置,使用config set命令。
相关命令
- slowlog get [n]: 获取慢查询队列
- slowlog len: 获取慢查询队列长度
- slowlog reset: 清空慢查询队列
例:
设置慢查询配置参数:
127.0.0.1:6379> CONFIG GET slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"
127.0.0.1:6379> CONFIG SET slowlog-log-slower-than 10
OK
127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379> CONFIG SET slowlog-max-len 1000
在redis中创建5个string类型的key
127.0.0.1:6379> mset key1 1 key2 2 key3 3 key4 4 key5 5
5
OK
查看所有的key
127.0.0.1:6379> KEYS *
1) "key1"
2) "key2"
3) "key3"
4) "key4"
5) "key5"
查看慢查询队列的长度,结果显示队列长度为1。看来已经有命令进入慢查询队列中了。
127.0.0.1:6379> SLOWLOG len
(integer) 1
慢查询日志由以下四个属性组成:标识ID,发生时间戳,命令耗时,执行命令和参数。下面我们通过命令来查看慢查询日志的内容。
127.0.0.1:6379> SLOWLOG get
1) 1) (integer) 16 # 日志的唯一标识符(uid)
2) (integer) 1530904865 # 命令执行时的 UNIX 时间戳
3) (integer) 12 # 命令执行的时长,以微秒计算
4) 1) "KEYS" # 命令以及命令参数
2) "*"
5) "127.0.0.1:54732"
6) ""
总结
本文总结了redis慢查询的配置与命令,并结合实例演示了慢查询的使用。