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 中:

slowlog-log-slower-than 10000    # 超过 10 毫秒(10000 微秒)的命令记入 Slow Log
slowlog-max-len 128              # 最多保留 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 会显著影响性能(单实例吞吐可能下降 50% 以上),只能在调试时短暂使用,用完立即 Ctrl+C 退出。

与关系型数据库的区别

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

观测云对照

观测云提供 Redis 集成,可采集 Slow Log 和性能指标(内存使用、命中率、连接数、命令 QPS 等),在监控视图中统一分析并配置慢命令告警,不用定期登到每台 Redis 实例上执行 SLOWLOG GET。

常见问题(FAQ)

Q:slowlog-log-slower-than 设为 0 会怎样?
A:记录所有命令。设为负数则完全关闭 Slow Log。

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

Q:Slow Log 会影响性能吗?
A:几乎不影响——写入内存中的一个固定长度队列,开销可忽略。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台