4.1 慢查询
慢查询简介,慢查询顾名思义是将redis执行命令较慢的命令记录下来。
一条命令的生命周期
- client通过网络向Redis发送一条命令
- 由于Redis是单线程应用,可以把Redis想像成一个队列,client执行的所有命令都在排队等着server端执行
- Redis服务端按顺序执行命令
- server端把命令结果通过网络返回给client
两点说明¶
- (1) 慢查询发生在第3阶段
- (2) 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素
慢查询是一个先进先出的队列,如果一条命令在执行过程中被列入慢查询范围内,就会被放入一个队列,这个队列是基于Redis的列表来实现,而且这个队列是固定长度的,当队列的长度达到固定长度时,最先被放入队列就会被pop出去。慢查询队列保存在内存之中,不会做持久化,当Redis重启之后就会消失。
结合上面图示这里涉及到两个配置和三个慢查询命令。
先看两个配置¶
- (1)slowing-max-len
- (2)slowing-log-slower-than
slowlog-max-len 慢查询队列的长度 slowlog-log-slower-than 慢查询阈值(单位:微秒),执行时间超过阀值的命令会被加入慢查询命令 如果设置为0,则会记录所有命令,通常在需要记录每条命令的执行时间时使用 如果设置为小于0,则不记录任何命令 slowlog list 慢查询记录
慢查询配置方法¶
1.修改配置文件重启
修改/etc/redis.conf配置文件,配置慢查询 修改配置方式应该在第一次配置Redis中时配置完成,生产后不建议修改配置文件
2.动态配置
127.0.0.1:6379> config get slowlog-max-len 1) "slowlog-max-len" 2) "128" 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-max-len 1000 OK 127.0.0.1:6379> config get slowlog-max-len 1) "slowlog-max-len" 2) "1000" 127.0.0.1:6379> config set slowlog-log-slower-than 1000 OK 127.0.0.1:6379> config get slowlog-log-slower-than 1) "slowlog-log-slower-than" 2) "1000"
与配置对应的是三个慢查询命令
- slowlog get [n]:获取慢查询队列
- slowlog len:获取慢查询队列长度
- slowlog reset:清空慢查询队列
值得注意的是:
- slowing-max-len不要设置过大,默认10ms,通常设置1ms
- slowing-log- slower-than不要设置过小,通常设置1000左右。
- 理解命令生命周期。
- 定期持久化慢查询。
版权声明:
本文为智客工坊「沉晓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。