SLOWLOG GET

返回慢速日志的条目。

语法

SLOWLOG GET [count]

引入版本:2.2.12

复杂度摘要:O(N)

SLOWLOG GET 命令按时间顺序从慢速日志中返回条目。

Redis慢日志是记录超过指定执行时间的查询的系统。执行时间不包括 I/O 操作,如与客户端通信、发送回复等,而只是实际执行命令所需的时间(这是命令执行过程中线程被阻塞且无法同时服务其他请求的唯一阶段)。

每当命令超过 slowlog-log-slower-than 配置指令定义的执行时间阈值时,就会将新条目添加到慢速日志中。慢速日志中的最大条目数由 slowlog-max-len 配置指令控制。

默认情况下,该命令返回日志中最新的十个条目。可选的 count 参数限制返回条目的数量,因此该命令最多返回 count 条目,特殊数字 -1 表示返回所有条目。

慢速日志中的每个条目均由以下七个值组成:

  1. 每个慢日志条​​目都有一个唯一的渐进标识符。
  2. 处理记录的命令的 unix 时间戳。
  3. 执行所需的时间量(以微秒为单位)。
  4. 组成命令参数的数组。
  5. 客户端 IP 地址和端口。
  6. 客户端名称(如果通过 CLIENT SETNAME 命令设置)。
  7. 命令中的参数总数,包括命令名称。 Redis 8.10 中添加。

当命令的参数多于 slowlog-max-argc 配置指令允许的参数(默认为 32 个)时,记录的参数数组(值 4)将被截断。在这种情况下,最后记录的元素将替换为 ... (N more arguments) 形式的字符串。总参数计数(值 7)始终反映命令的原始参数计数(在截断之前捕获),因此可以直接读取它而无需解析该字符串。

可以使用条目的唯一 ID 来避免多次处理慢日志条目(例如,您可能有一个脚本,针对每个新的慢日志条目向您发送电子邮件警报)。该 ID 在 Redis 服务器执行过程中永远不会重置,只有服务器重新启动才会重置它。

可选参数

count

最近返回的慢日志条目数。 -1 返回所有条目;默认值为 10。

示例

每个条目的第七个元素报告命令的参数总数。这对于记录的参数列表已被截断的可变参数命令最有用。在以下示例中,slowlog-max-argc 限制保留默认值 32,并且发出带有 33 个参数(命令名称、键和 31 个成员)的 SADD 命令:

redis> CONFIG SET slowlog-log-slower-than 0
OK
redis> SLOWLOG RESET
OK
redis> SADD myset 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
(integer) 31
redis> SLOWLOG GET 1
1) 1) (integer) 12
   2) (integer) 1752422400
   3) (integer) 21
   4)  1) "SADD"
       2) "myset"
       3) "3"
       4) "4"
          ...
      32) "... (2 more arguments)"
   5) "127.0.0.1:52276"
   6) ""
   7) (integer) 33

记录的参数数组(元素 4)被截断为 32 项,最后一项指示还有多少参数被省略。参数计数(元素 7)仍然报告 33 的原始总数。

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动
不支持 脚本。此外,Redis 软件不会返回客户端 IP 地址、端口和名称。

返回值

RESP2

数组回复:按照上述格式的慢日志条目列表。

RESP3

数组回复:按照上述格式的慢日志条目列表。

资料来源:Redis 官方 SLOWLOG GET 文档;中文内容参考 Redis 文档许可。