Redis-慢查询

生命周期

redis执行一条命令的生命周期分为4个阶段:

  1. 发送命令
  2. 命令排队(单线程)
  3. 执行命令
  4. 返回结果
    生命周期
    注意:
    (1)慢查询发生在第3阶段。
    (2)客户端超时不一定是慢查询导致的,但是慢查询是客户端超时的一个可能影响因素。

配置

slowlog-max-len:
(1) 先进先出的队列
(2)固定长度
(3)保存在内存中
slowlog-log-slower-than:
(1)慢查询阈值(单位:微秒)
(2)slowlog-log-slower-than=0 记录所有命令为慢查询命令
(3)slowlog-log-slower-than<0 所有命令都不记录
默认值
config get slowlog-max-len = 128
config get slowlog-log-slower-than = 10000
配置方式:
(1)修改配置文件重启(并不建议你这么干,因为需要重启redis)
(2)动态配置,使用config set
一般配置:
  slowlog-log-slower-than 不要设置过大,默认为10毫秒,通常设置为1毫秒,为什么要这个值?
  因为redis单机号称10万QPS,正常我们能达到万级别的QPS,平均一条命令执行时间为0.1毫秒,因此如果命令执行超过1毫秒我们就认为它影响到我们的QPS了。当然这个还是要根据实际业务情况来设置,像极了你问你妈炒菜放多少盐多少油合适,她会告诉你,适量就好。
  slowlog-max-len 也是同样的道理,但是不能设置太小,通常设置在1000左右。这又是为什么呢?
  慢查询是一个先进先出的队列,因此如果队列长度设置过小,随着系统运行慢查询命令累积变多,前面的命令都会丢失,不利于我们分析问题。
  由于慢查询存储在内存中,redis重启就会清空,在实际生产可以使用slowlog get[n]命令将慢查询命令序列化到持久化介质中,例如mysql,方便后期分析问题。

慢查询命令

  1. slowlog get[n] :获取慢查询队列
  2. slowlog len : :获取慢查询队列长度
  3. slowlog reset : 清空慢查询队列
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值