hz 控制什么
hz 控制 Redis 后台定时任务的执行频率,默认 10,表示每秒执行 10 次。这些任务负责触发过期键清理、处理阻塞命令(如 BLPOP)超时检测、回收空闲连接等日常工作。调高让这些动作更及时,代价是 CPU 占用随之上升,而且每次任务本身也要占用主线程时间。
基本信息
| 默认值 | 10(每秒 10 次) |
|---|---|
| 影响范围 | 过期清理触发、阻塞命令超时处理、空闲连接检查 |
| 调整方向 | 低延迟实例可适度调高,高吞吐实例保持默认 |
| 主要代价 | CPU 占用随频率上升 |
| 相关配置 | dynamic-hz 允许在空闲时自动降低频率 |
典型使用场景
- 低延迟实例:希望过期键更快被清理时适度调高
- 阻塞命令密集:让一类阻塞命令的超时唤醒更及时
- CPU 有余量但延迟敏感:用频率换取响应及时性
- 空闲实例省开销:配合动态调节在负载低时降频
- 调参验证:改动前后用同一指标对比,别只看短窗口
查看与调整
查看与调整
redis-cli CONFIG GET hz # 当前配置值
redis-cli CONFIG SET hz 20 # 按需调整,同时观察 CPU 与延迟
redis-cli CONFIG GET dynamic-hz # 是否允许动态调整频率
redis-cli INFO cpu # 各类任务占用的 CPU 时间变化
redis-cli INFO commandstats # 命令耗时是否随改动变化调整得失去看
| 方向 | 收益 | 代价 |
|---|---|---|
| 调高 hz | 过期清理与超时检测更及时 | CPU 上升,主线程被更频繁打断 |
| 保持默认 | 开销与及时性的平衡点 | 极端低延迟诉求可能不够 |
| 调低 hz | CPU 占用下降 | 过期键驻留更久,超时处理变钝 |
| 启用动态调节 | 空闲时自动降频 | 高负载下的频率由实现策略决定 |
频率调整的效果在短窗口内很难看出来:至少覆盖一个完整业务周期再比较,并同时记录 CPU 占用变化,避免只看到延迟一侧。
把 hz 当成所有延迟问题的通用开关会失望:它只影响定时任务类工作,慢命令、网络与持久化引起的延迟与它关系不大。