Redis慢查询日志核心是捕获内部执行超时命令以定位性能瓶颈;slowlog-log-slower-than单位为微秒,实时场景建议500~1000,常规读写2000~5000,需同步调大slowlog-max-len并执行CONFIG REWRITE持久化。

Redis 慢查询日志(SlowLog)的核心作用是捕获执行时间过长的命令,帮你快速定位性能瓶颈。它只记录命令在 Redis 内部的实际执行耗时,不包含网络延迟、客户端排队或序列化开销,所以配置阈值必须结合业务真实延迟敏感度来定,不能简单套用默认值。
怎么设 slowlog-log-slower-than 才合理
这个参数单位是微秒(μs),不是毫秒。默认 10000(即 10ms),对多数线上服务已偏宽松:
- 实时类场景(如会话缓存、推荐排序):建议设为 500~1000(0.5~1ms)
- 常规读写(用户资料、商品信息):2000~5000(2~5ms)较平衡
- 临时深度排查:可设为 0 记录所有命令,但仅限短时间使用,否则内存和性能压力大
- 彻底禁用:设为负值,例如 -1
配套必须调大的 slowlog-max-len
慢查询日志本质是一个固定长度的 FIFO 队列,默认仅保留 128 条,容易被覆盖。尤其在阈值调低后,日志量上升更快:
- 生产环境建议设为 1000 或更高
- 动态调整命令:CONFIG SET slowlog-max-len 1000
- 若不调大,可能刚发现慢命令,日志就已被新条目挤掉
动态修改后如何确保持久生效
只用 CONFIG SET 是临时生效,重启后会丢失。关键三步缺一不可:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 执行 CONFIG SET slowlog-log-slower-than 2000
- 同步执行 CONFIG SET slowlog-max-len 1000
- 立即执行 CONFIG REWRITE,把当前配置写入 redis.conf 文件
漏掉 CONFIG REWRITE,下次重启就会回退到原始配置——这是线上常见疏漏。
怎么查和分析慢日志
常用命令简洁直接:
- SLOWLOG LEN:查看当前日志总条数
- SLOWLOG GET 10:获取最近 10 条,每条含 ID、时间戳、耗时(微秒)、完整命令及参数、客户端地址
- SLOWLOG RESET:清空日志(排查中可定期重置,避免干扰)
分析重点看:哪些命令高频出现(如 KEYS、LRANGE 大范围扫描)、耗时是否集中突增、是否集中在某类 key 模式或客户端 IP——这些往往是优化入口点。

















