Redis中慢查询功能

1、慢查询介绍

        慢查询,顾名思义就是比较慢的查询。慢查询日志帮助开发和运维人员定位系统存在的慢操作。

2、命令执行过程

Redis中慢查询功能_第1张图片

说明:

  • 慢查询发生在第3阶段
  • 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素
  • 慢查询日志是存放在Redis内存列表中。

3、慢查询日志

        慢查询日志是Redis服务端在命令执行前后计算每条命令的执行时长,当超过某个阈值是记录下来的日志。日志中记录了慢查询发生的时间,还有执行时长、具体什么命令等信息,它可以用来帮助开发和运维人员定位系统中存在的慢查询。

4、获取慢查询日志

        使用 slowlog get 命令获取慢查询日志,在 slowlog get 后面还可以加一个数字,用于指定获取慢查询日志的条数,比如,获取3条慢查询日志:

127.0.0.1:6379> SLOWLOG get 3
1) 1) (integer) 0
2) (integer) 1640056567
3) (integer) 11780
4) 1) "FLUSHALL"
5) "127.0.0.1:43406"
6) ""

参数:

  • 唯一标识ID
  • 命令执行的时间戳
  • 命令执行时长
  • 执行的命名和参数 

5、获取慢查询日志的长度

        使用 slowlog len 命令获取慢查询日志的长度。

注意:
        当前Redis中有0条慢查询日志。

6、配置慢查询参数

命令执行时长的指定阈值 slowlog-log-slower-than。
        slowlog-log-slower-than的作用是指定命令执行时长的阈值,执行命令的时长超过这个阈值时就会被记录下来。
存放慢查询日志的条数 slowlog-max-len。
        slowlog-max-len的作用是指定慢查询日志最多存储的条数。实际上,Redis使用了一个列表存放慢查询日志,slowlog-max-len就是这个列表的最大长度。

Redis中慢查询功能_第2张图片

7、查看慢日志配置

        查看redis慢日志配置,登陆redis服务器,使用redis-cli客户端连接redis server。

config get slow*

Redis中慢查询功能_第3张图片

说明:

        10000阈值,单位微秒,此处为10毫秒,128慢日志记录保存数量的阈值,此处保存128条。

 8、修改redis配置文件

        比如,把slowlog-log-slower-than设置为1000,slowlog-max-len设置为1200:

        使用 config set 命令动态修改。

config set slowlog-log-slower-than 10001
config set slowlog-max-len 129

Redis中慢查询功能_第4张图片

9、生产环境配置

slowlog-max-len配置

  • 线上建议调大慢查询列表,记录慢查询时Redis会对长命令做截断操作,并不会占用大量内存。
  • 增大慢查询列表可以减缓慢查询被剔除的可能,例如线上可设置为1000以上。

slowlog-log-slower-than配置

  • 默认值超过10毫秒判定为慢查询,需要根据Redis并发量调整该值。
  • 由于Redis采用单线程响应命令,对于高流量的场景,如果命令执行时间在1毫秒以上,那么Redis最多可支撑OPS不到1000。因此对于高OPS场景的Redis建议设置为1毫秒。

你可能感兴趣的:(Redis数据库,redis,数据库,缓存,慢查询)