Redis slowlog 命令

SLOWLOG subcommand [argument]

读取或设置Redis慢查询日志。

Redis slow log overview

Redis Slow log用来记录超过指定执行时间的命令。执行时间不包括I/O操作像建立连接,发送应答等,仅仅时真正执行命令需要的时间(这个时间线程被阻塞不能响应其它请求)。

配置慢日志有两个参数:

slowlog-log-slower-than 设置执行时间(微秒),超过这个执行时间的命令会被记录。负数表示关闭慢日志,0表示记录所有命令。

slowlog-max-len 设置记录慢日志的最大长度。最小值是0。当一个新命令被记录并且慢日志已经达到了最大长度,那么最老的记录将被删除,以便空间来记录新命令。

可以通过编辑redis.conf 来配置Reis,或者使用 CONFIG GET 和 CONFIG SET 配置运行中的实例.

Reading the slow log

慢日志记录在内存中,不会写到文件上。所以即使记录所有命令到慢日志中性能开销也很小。

读取慢日志命令:

SLOWLOG GET 返回每一条慢日志。

SLOWLOG GET n 返回最新的n条慢日志。

注意:请使用新版redis-cli以便能解析慢日志输出,较老版本的redis-cli不支持多行嵌套。

输出格式

redis 127.0.0.1:6379> slowlog get 2
1) 1) (integer) 14
   2) (integer) 1309448221
   3) (integer) 15
   4) 1) "ping"
2) 1) (integer) 13
   2) (integer) 1309448128
   3) (integer) 30
   4) 1) "slowlog"
      2) "get"
      3) "100"

Redis4.0及之后版本新增域:

5) "127.0.0.1:58217"
6) "worker-123"

每条慢日志由4或6部分组成:

  • 每条慢日志由一个递增的唯一ID
  • 记录慢日志的Unix时间戳
  • 执行这个命令花费的时间,单位是微妙
  • 数组形式的命令参数
  • 客户端ip和端口 (4.0 only).
  • 通过 CLIENT SETNAME 命令设置的客户端名字 (4.0 only).

唯一ID可以用来避免慢日志被处理多次(例如你有一个每当产生新的慢日志发送报警的有脚本)。

ID在Redis运行期间不会重置,Redis重启之后会重置ID。

*查询当前slowlog的长度

SLOWLOG LEN获取slow log的长度

重置slow log.

 SLOWLOG RESET 命令用来重置slowlog。一旦删除不可恢复。