一 什么是redis的慢查询
慢查询并不是redis特有的,mysql也会提供慢查询日志供相关人员分析
先看看redis命令的生命周期:
<1> client发送命令
<2> 命令进入队列排队等待执行
<3> 执行命令
<4> 返回结果
redis的慢查询功能:对于一条执行"很慢",即执行时间很长的命令,那么它将会被记录在慢查询日志中。
记得定期持久化慢查询
而redis的慢查询仅仅发生在第3阶段,所以客户端超时不一定是慢查询导致的,但是慢查询是客户端超时的一个可能因素。
redis命令进入队列中,有3个特点:
a.先进先出队列
b.固定长度
c.保存在内存内,redis重启清空
关于慢查询的两个配置:
<1> showlog-max-len:慢查询日志最多存储多少条,但是慢查询日志时放在哪里了呢,实际上慢查询使用一个队列来存储慢查询日志。
该参数就是列表的最大长度,达到最大长度时,最先进入的那条慢查询日志就会出列。
默认值:128
通常设置为1000左右
<2> showlog-log-slower-than:(微秒为单位)
showlog-log-slower-than=0,会记录所有命令;
showlog-log-slower-than<0,对于任何命令都不会进行记录
默认值:10000
通常设置为1ms,即1000
二 相关命令
配置命令
config set slowlog-log-slower-than 20000
config set showlog-max-len 1024
config rewrite :将配置持久化到本地配置文件
获取慢查询日志命令:
slowlog get ([n]):
返回 id,时间戳,耗时,命令和参数
该命令可以用于定期获取慢查询日志,并进一步将其持久化到mysql、elasticsearch等中
获取慢查询日志列表当前长度:
slowlog len
慢查询日志重置(清空):
slowlog reset
网友评论