你知道Redis慢查询吗?

一、回顾Redis处理命令全过程

在这里插入图片描述

  • 1、发送命令
  • 2、Redis单线程,可以想象成队列,命令太多处理不过来的情况他会排队,逐个执行,但Redis可以达到每秒处理万级别的命令(前提是配置好,比如不能配置aof的always等)
  • 3、执行命令
  • 4、给客户端返回结果

二、慢查询

1、说明

慢查询发生在上图的第3阶段,也就是命令被执行所消耗的时间,比如keys *这种极其耗时的命令。命令通过网络传输所消耗的时间以及排队等待的时间不算。

2、配置

2.1、slowlog-max-len

存放慢查询语句的是一个先进先出的队列,他有固定长度,slowlog-max-len就是控制慢查询语句数量的,存放到内存中的,默认128,超过128的话会舍弃最先进入队列的命令。所以一般可以搞大点,因为他是存放到内存的,重启就没了。

slowlog-max-len 128

2.2、slowlog-log-slower-than

慢查询阈值(单位:微妙,默认是10000,也就是10毫秒)。默认是超过10ms命令没执行完就扔到慢查询队列里(上面参数控制队列大小)。Redis号称QPS万级别,所以建议设置成1000,也就是1ms。

# 默认10ms
slowlog-log-slower-than 10000
# 0代表记录所有命令
slowlog-log-slower-than 0
# 小于0代表不记录任何命令
slowlog-log-slower-than -1

2.3、动态配置

多态更改配置,不需要重启Redis即可让慢日志配置的修改失效。

config set slowlog-max-len 1000
config set slowlog-log-slower-than 1000

3、慢查询命令

命令描述
slowlog get [n]获取慢查询队列的前n条
slowlog len获取慢查询队列长度
slowlog reset清空慢查询队列

三、实操

(1)动态配置时间为0,代表每条命令都视为慢查询

config set slowlog-max-len 1000
config set slowlog-log-slower-than 0

(2)随便写几个命令

keys *
get k1

(3)看慢查询队列

127.0.0.1:6379> slowlog len
(integer) 3
127.0.0.1:6379> SLOWLOG get 3
1) 1) (integer) 4
   2) (integer) 1585794916
   3) (integer) 12
   4) 1) "get"
      2) "k1"
   5) "127.0.0.1:41242"
   6) ""
2) 1) (integer) 3
   2) (integer) 1585794914
   3) (integer) 22
   4) 1) "keys"
      2) "*"
   5) "127.0.0.1:41242"
   6) ""
3) 1) (integer) 2
   2) (integer) 1585794904
   3) (integer) 5
   4) 1) "SLOWLOG"
      2) "reset"
   5) "127.0.0.1:41242"
   6) ""

四、个人建议

  • slowlog-max-len:不要设置过大,默认10ms,建议设置1ms。
  • slowlog-log-slower-than:不要设置过小,建议设置1000左右
  • 定期持久化慢查询。因为slowlog-max-len这个队列是放到内存里的,重启就没了,而且有长度限制,所以我们要查的慢命令多的话根本不显示,会丢失命令。所以可以用第三方插件持久化到mysql或者自己写个脚本持久化到mysql或者文件。

五、个人公众号

微信公众号【Java码农社区】
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【原】编程界的小学生

没有打赏我依然会坚持。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值