SLOWLOG GET 是什么
SLOWLOG GET 返回执行时间超过阈值的命令记录,每条包含唯一编号、发生时间戳、执行耗时(微秒)、命令与参数,以及发起命令的连接信息。它是定位慢命令最直接的入口,但记录的是命令本身,不含它对键空间造成的副作用,也不含网络往返与排队时间。
基本信息
| 命令 | SLOWLOG GET [count] |
|---|---|
| 耗时单位 | 微秒(μs) |
| 保留条数 | 由 slowlog-max-len 控制,默认 128 条 |
| 配套命令 | SLOWLOG LEN / SLOWLOG RESET / SLOWLOG HELP |
| 记录范围 | 单条记录最多保留 32 个参数,超长参数会被截断 |
典型使用场景
- 延迟毛刺定位:延迟上升时段先拉一批慢日志,确认是哪条命令在拖时间
- 上线回归:新版本发布后对比慢日志条目数量与类型的变化
- 大键治理:慢日志里反复出现的集合类命令往往指向大键操作
- 批量任务排查:定时任务或数据导入期间慢日志会明显增多
- 容量评审:把慢日志里的命令与 commandstats 的调用量结合,决定优化顺序
读取与清理
读取与清理
redis-cli SLOWLOG GET 10 # 看最近 10 条慢命令
redis-cli SLOWLOG LEN # 当前缓冲里有多少条
redis-cli SLOWLOG RESET # 清空记录,便于观察新窗口
redis-cli INFO commandstats | grep -E 'cmdstat_lrange' # 结合命令统计看调用量
redis-cli CONFIG GET slowlog-log-slower-than # 确认记录阈值
redis-cli CONFIG GET slowlog-max-len # 确认保留条数输出逐列读法
| 字段 | 含义 | 读法 |
|---|---|---|
| id | 每次记录分配的自增编号 | 编号越大越新,RESET 后重新计数 |
| timestamp | 命令执行时的 Unix 时间戳 | 用来和业务监控时间轴对齐 |
| duration | 服务端执行耗时(微秒) | 不含网络往返与排队等待 |
| args | 命令名与参数列表 | 导出或分享前必须脱敏 |
| client_address | 发起命令的连接地址 | 定位到具体应用或连接池 |
| client_name | 连接自称的名字(CLIENT SETNAME) | 命名规范的应用可一眼看出归属 |
duration 只覆盖服务端执行环节:客户端看到的总体延迟还包含网络往返与主线程排队,两者差距大时说明问题不在命令本身。
慢日志里的参数可能包含用户标识、手机号或业务数据,导出、截图、贴进工单之前务必脱敏。