慢查询:
(1)生命周期:客户端向服务器发送命令,由于redis服务器是单线程的,所以在大量命令执行时,命令会排队,从而串行执行,
轮到该命令执行的时候,可能出现慢查询,查询结果之后,返回结果给客户端。慢查询发生在命令执行阶段,客户端超时不一定就是慢查询引起的,但是其中的一个因素。
(2)慢查询配置:
慢查询是一个先进先出队列,当一个命令被认为是一个慢查询时,就会被列入队列中。
队列是一个先进先出队列,并且有固定的长度,且保存在内存中,redis的慢查询队列是由redis本身的list数据结构来实现的。
slowlog-max-len:配置队列的长度
slowlog-log-slower-than:查询时间为多少秒命令被记录
客户端执行以下命令获得慢查询的配置
redis-cli :
config get slowlog-max-len
config get slowlog-log-slower-than
执行以下命令来设置慢查询
config set slowlog-max-len
confog set slowlog-log-slower-than
(3)慢查询相关的命令:
slowlog get n 获取几条慢查询
slowlog len 获取慢查询的长度
slowlog reset 清空慢查询
运维经验:
slowlog -max-len 默认为10ms 通常为1ms
slowlog-log-slower-than 通常1000
要理解命令的声明周期
定期的持久化慢查询,因为慢查询是在内存中,并且慢查询队列是一个先进先出的定长队列