Redis 慢查询日志:原理、配置与分析方法
什么是慢查询日志?
与 MySQL 的慢 SQL 日志类似,Redis 也提供了慢查询日志(Slow Log)功能,用于记录执行时间超过预设阈值的命令,帮助开发者定位性能瓶颈。
Redis 的 slowlog 是一个记录查询执行时间的内部系统。这里的“执行时间”特指命令在 Redis 服务器内部实际执行所耗费的时间,不包括网络通信、客户端响应等
I/O 开销。
慢查询日志存储在内存中,读写速度极快,因此开启此功能对 Redis 本身的性能影响微乎其微。
核心配置参数
慢查询日志的行为主要由以下两个参数控制:
slowlog-log-slower-than
定义慢查询的时间阈值,单位是微秒(μs),默认值为 10000(即 10 毫秒)。执行时间超过此阈值的命令将被记录。
slowlog-max-len
指定慢查询日志列表的最大长度,默认是 128 条。当新记录产生且列表已满时,最旧的记录会被移除以腾出空间。在生产环境中,建议适当调大此值,例如设为
1000,以减少日志被覆盖的频率。
可通过以下命令查看当前配置:
127.0.0.1:6379> config get slowlog-log-slower-than
127.0.0.1:6379> config get slowlog-max-len
参数调整可以通过 config set 命令临时修改,或直接编辑 redis.conf 配置文件永久生效。
慢查询日志操作命令
使用 slowlog 命令管理慢查询日志,其基本语法为:
slowlog subcommand [argument]
常用子命令示例:
# 获取所有慢查询记录(默认最多返回 slowlog-max-len 条)
127.0.0.1:6379> slowlog get
# 获取最近 N 条慢查询记录
127.0.0.1:6379> slowlog get 10
# 获取当前慢查询日志列表的长度
127.0.0.1:6379> slowlog len
# 清空慢查询日志列表
127.0.0.1:6379> slowlog reset
每条慢查询记录通常包含以下信息:唯一 ID、命令执行时的时间戳、命令消耗的微秒数、以及具体的命令和参数。通过分析这些记录,可以有效识别出需要优化的操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 只有那年胜过年年!
评论
