客户端请求到Redis的一个 生命周期
何为慢查询?
系统在命令执行前后计算每条命令的执行时间,当超过预定阀值时,记录命令的发生时间,耗时,命令的详细信息等。
Redis客户端执行一条命令分为发送命令、命令排队、命令执行、返回结果。慢查询只统计命令执行,所以没有慢查询并不代表客户端没有超时问题。
生命周期:
1客户端发送命令
2.因为redis是单线程 所以命令要排队执行
3.执行命令,当命令被列为慢查询 会被放入一个队列
4.返回执行结果
注意:
1慢查询只发生在第三阶段;
2.客户端超时不一定是慢查询的原因,但慢查询是客户端超时的一个可能因素;
慢查询的两个配置-
-
slowlog-max-len
1)先进先出队列
2)固定长度
3)保存在内存内
2. slowlog-log-slower-than
1)慢查询阈值(单位:微秒)
2)slowlog-log-slower-than=0,记录所有命令
3)slowlog-log-slower-than<0,不记录任何命令
_____________________________________________________________________________________________
参数配置
慢查询有两个参数需要配置:
[ ] slowlog-log-slower-than
表示慢查询预设的超时阀值,单位是微妙(μs)
1s = 1000ms = 1_000_000μs
默认10000微秒,即10毫秒
执行超过这个时间的命令将被记录到慢查询日志
slowlog-log-slower-than = 0:表示记录所有命令。
slowlog-log-slower-than < 0:表示不记录
[ ] slowlog-max-len
表示慢查询日志的条数
默认为 128
Redis使用列表存储慢查询日志
当已经记录了128条慢查询,现在又来一条,最早记录的那条将被踢出,最新一条入列
慢查询命令:
运维经验: