redis 运行生命周期
- 发送命令
- 排队 (单线程,所以要排队)
- 执行命令 (不同的命令,执行时间不同。有的执行时间长,影响整体性能)
- 返回结果
慢查询
-
慢查询发生在
执行命令阶段(第三阶段)
,当发现某redis命令执行时间过长,就会记录该命令到慢查询日志当中。 -
使用者可以更好地监视和找出在业务中一些慢redis操作,找到更好的优化方法。
慢查询设置
最大超时时间,慢查询的阈值(单位:微妙)
CONFIG SET slowlog-log-slower-than num
设置超过多少微秒的查询为慢查询,并且将这些慢查询加入到日志文件中,num的单位为毫秒,windows下redis的默认慢查询时10000微妙即10毫秒。通常设置为1ms。
如果需要记录所有的命令,我们可以设置 阈值为0 ,slowlog-log-slower-than=0
,不想记录所有的命令,则设置slowlog-log-slower-than < 0
阈值小于0 即可。
慢查询最大日志数
CONFIG SET slowlog-max-len num
设置日志的最大数量,num无单位值,windows下redis默认慢查询日志的记录数量为128条。通常设置为1000 左右。该配置 是一个先进先出的队列,且有固定的长度,保存在内存当中。
慢查询常用命令
- showlog get [n]:获取慢查询队列
- showlog len : 获取慢查询队列长度
- showlog reset :清空慢查询队列