首页/数据/Redis 进阶速查/CLIENT NO-TOUCH 读取不扰动热度
性能与排障129 条

CLIENT NO-TOUCH 读取不扰动热度

CLIENT NO-TOUCH on 让当前连接的读取操作不更新 LRU/LFU 热度,防止巡检类访问污染热点统计。

Redis 进阶速查数据更新于 2026-10-13

读取不扰动热度

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 频率淘汰决策据此做出
版本要求服务端需支持该命令旧版本直接报错
使用边界只给扫描类连接使用业务读连接开启会让热度数据失真
巡检脚本读取大量键,开启后不再干扰淘汰统计的准确性,这是让热度数据保持可信的最低成本做法。
业务读连接误开会让热点鉴定失真:淘汰可能把真正的热键清掉,或让冷键长期留在内存里,问题要到容量紧张时才暴露。

易错点

  • 业务读连接误开:热度统计失真,淘汰决策建立在错误数据上
  • 新旧版本混部:不支持该命令的实例会报错,脚本要先探测能力
  • 开启后不确认生效:CLIENT INFO 是低成本确认方式,跳过等于假设成功
  • 重连后忘记重置:标记按连接生效,连接重建后不再具备该行为

数据来源与参考

  • Redis 官方文档:CLIENT NO-TOUCH
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌