Redis学习笔记—慢查询分析

慢查询日志帮助开发人员定位系统存在的慢操作,慢查询就是系统在命令执行前后计算的每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis提供类似的功能

客户端请求的四个执行步骤

1.发送命令——2.排队等待执行——3.执行命令——4.返回结果

慢查询只统计步骤3执行命令的这一步,所以没有慢查询并不等于客户端没有超时的情况

慢查询的配置参数

在redis.conf配置文件中有两个配置项:slowlog-log-slower-than和slowlog-max-len

slowlog-log-slower-than表示预设的阈值,默认为10000微秒(1秒=1000毫秒=1000000微秒),如果一条命令执行时间超过了10000微秒就会被记录放在慢查询日志中
如果slowlog-log-slower-than设置为0就会记录所有的命令,设置为小于0就不会记录任何的命令

slowlog-max-len:Redis使用了一个列表来存储慢查询日志,此配置就是这个列表的最大长度,默认为128条,如果记录多于128条会删除最先插入的数据

如果想要修改配置可以直接在redis客户端进行修改,以slowlog-max-len为例

127.0.0.1:6379> config set slowlog-max-len 512
OK
127.0.0.1:6379> config rewrite
OK

在查看配置文件,发现slowlog-max-len配置已经修改为512了

获取慢查询日志

虽然慢查询日志是存放在Redis内存列表中的,但是Redis并没有暴露这个列表的键,而是通过一组命令来实现对慢查询日志的访问和管理。

slowlog get [n]

查询两条慢查询记录,此处的[n]为选填项,如果不填查询所有,如果填就是查询指定的条数

127.0.0.1:6379> slowlog get "2"
1) 1) (integer) 12
   2) (integer) 1552899968
   3) (integer) 1000502
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "a"
      5) "1"
      6) "1000"
      7) "copy"
   5) "127.0.0.1:35730"
   6) ""
2) 1) (integer) 11
   2) (integer) 1552899943
   3) (integer) 1000909
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "a"
      5) "0"
      6) "1000"
      7) "copy"
   5) "127.0.0.1:35730"
   6) ""

四个主要参数

  • 慢查询日志的标识id
  • 发生时间戳
  • 命令耗时
  • 执行命令和参数

获取慢查询列表长度

slowlog len

当前有13条慢查询

127.0.0.1:6379> slowlog len
(integer) 13

清除慢查询列表

slowlog reset

清除当前慢查询列表

127.0.0.1:6379> slowlog len
(integer) 13
127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog len
(integer) 0

发表评论

邮箱地址不会被公开。 必填项已用*标注