Redis 如何记录所有命令或慢查询?

Redis 记录慢命令:slowlog-log-slower-than 设微秒阈值,SLOWLOG GET 查看;MONITOR 命令实时观察命令(有排除/脱敏规则)(生产慎用)。本文介绍两种方法及注意事项。

最佳实践
Redis 如何记录所有命令或慢查询?封面

慢查询:Redis 内置 Slow Log,配置 slowlog-log-slower-than 10000(微秒,即 10ms),用 SLOWLOG GET 命令查看。实时观察命令:用 MONITOR 输出,但它有命令排除/脱敏规则,不是完整审计(性能开销大,仅短期调试用)。

配置慢查询日志(Slow Log)

redis.conf 中:

# 10 毫秒(10000 微秒)的执行时间阈值
slowlog-log-slower-than 10000
# 最多保留 128 条
slowlog-max-len 128

或运行时动态调整:

CONFIG SET slowlog-log-slower-than 10000
CONFIG SET slowlog-max-len 128

查看慢查询

SLOWLOG GET          # 查看最近的慢命令
SLOWLOG GET 10       # 只看最近 10 条
SLOWLOG LEN          # 当前 Slow Log 中的条数
SLOWLOG RESET        # 清空

每条记录包含:唯一 ID、时间戳、执行耗时(微秒)、命令及参数摘要;过长参数/参数列表可能截断,敏感信息也需控制。

实时观察命令(MONITOR)

redis-cli MONITOR

注意:MONITOR 会显著影响性能(开销依命令、流量和监控客户端而异,不能将固定比例当通用值),只能在调试时短暂使用,用完立即 Ctrl+C 退出。

与关系型数据库的区别

Redis 的 Slow Log 存储在内存中(不写磁盘文件),重启后丢失。需要长期保留要用外部工具定期拉取。

观测云的 Redis 采集器提供 redis_slowlog 数据。配置连接凭据和 Slow Log 读取权限后,核对 slowlog_max_len 与采集周期,并用已知慢命令检查 ID、时间与耗时,避免源端记录被覆盖后才尝试补采。

常见问题(FAQ)

Q:slowlog-log-slower-than 设为 0 会怎样?
A:取消耗时门槛,记录符合 Slow Log 记录规则的命令,并不等于无遗漏全量审计;负数关闭。

Q:Slow Log 里的耗时包含网络传输吗?
A:不包含。只记录命令执行时间,不含网络 IO 和排队等待。

Q:Slow Log 会影响性能吗?
A:有采样/复制参数和存储开销,需按阈值、命令长度、保留量和流量测量;不能统一认为可忽略。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台