读取不扰动热度
CLIENT NO-TOUCH on 让当前连接的读取操作不更新键的 LRU/LFU 热度信息。巡检、导出、统计类脚本会大量读取键,这些访问本来会把冷键读热,从而影响淘汰决策与热度统计。开启后读取不再刷新空闲时间与访问频率,热点鉴定结果更接近真实业务流量。它同样只作用于当前连接,业务读连接不应开启。
基本信息
| 命令 | CLIENT NO-TOUCH on|off |
|---|---|
| 效果 | 读取不刷新对象的空闲时间与访问频率 |
| 适用连接 | 巡检、导出、统计类扫描连接 |
| 不适用连接 | 业务读连接,会干扰热度统计 |
| 作用范围 | 仅当前连接,重连后失效 |
典型使用场景
- 巡检脚本:全量扫描键时不污染热度信息
- 数据导出:大批量读取不影响淘汰策略的判断
- 抽样统计:读取样本时保持热度数据与业务一致
- 容量分析:配合 OBJECT FREQ 或 IDLETIME 得到的结论更可信
- 问题对照:确认热度异常是否由巡检流量造成
用法与核查
用法与核查
redis-cli CLIENT NO-TOUCH on # 当前连接读取不再刷新热度
redis-cli OBJECT IDLETIME somekey # 查看键的空闲时间
redis-cli OBJECT FREQ somekey # 启用 LFU 时查看访问频率
redis-cli CLIENT INFO # 确认连接标记已生效
redis-cli CONFIG GET maxmemory-policy # 对照当前淘汰策略关注点
| 要点 | 说明 | 注意 |
|---|---|---|
| 生效对象 | 仅当前连接 | 其他连接不受影响 |
| 被影响的统计 | LRU 空闲时间与 LFU 频率 | 淘汰决策据此做出 |
| 版本要求 | 服务端需支持该命令 | 旧版本直接报错 |
| 使用边界 | 只给扫描类连接使用 | 业务读连接开启会让热度数据失真 |
巡检脚本读取大量键,开启后不再干扰淘汰统计的准确性,这是让热度数据保持可信的最低成本做法。
业务读连接误开会让热点鉴定失真:淘汰可能把真正的热键清掉,或让冷键长期留在内存里,问题要到容量紧张时才暴露。