首页/数据/Redis 进阶速查/缓存预热:重建命中率
性能与排障129 条

缓存预热:重建命中率

清空或切换后缓存全冷:预热方案要提前准备(热点键清单、来源回放、渐进放量),并监控命中率恢复曲线。

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

冷缓存为什么要预热

缓存被清空、实例被切换或新集群上线后缓存是全冷的:所有请求都要回源,数据库或后端服务的压力瞬间放大,恢复时间取决于后端能顶住多少回源流量。预热方案要提前准备——整理热点键清单、按来源回放数据、渐进放量——并监控命中率恢复曲线,确认回源压力确实降下来了。

基本信息

输入材料热点键清单与数据来源
常见方式数据回放、按比例渐进放量
观测指标命中率恢复曲线与回源请求量
TTL 约定预热数据同样要带 TTL,避免旧数据长期驻留
主要风险无预热直接全量放量,回源把后端打崩

典型使用场景

  • 新集群上线:先灌热点数据再切流量,避免首次访问全部回源
  • 缓存清空后恢复:按热点清单分批复灌,边灌边观察
  • 大促前准备:提前把核心商品与配置类数据预热到位
  • 发布后验证:看命中率曲线是否在预期时间内回到常态
  • 容量评估:用回源比例评估后端能否承受未命中流量

预热与观测

预热与观测
redis-cli INFO stats | grep -E 'keyspace_hits|keyspace_misses'   # 计算命中率
redis-cli DBSIZE                                                 # 预热进度
redis-cli INFO clients | grep connected_clients                   # 回源侧连接压力
redis-cli TTL hot:key:1001                                       # 确认预热数据带 TTL
redis-cli INFO commandstats | grep set                           # 回灌写入量

预热方式对照

方式适用情况注意点
按清单回放热点集合明确清单要定期更新,避免过期
按比例渐进放量热点不明确放量节奏要看后端水位
离线数据导入数据本身可离线产出导入期间留意实例延迟与 CPU
被动回填无法提前预知访问要评估后端能否承受首轮回源
预热脚本与业务发布解耦:放进同一个发布流程会互相拖慢,预热失败还会连带阻塞业务上线。
预热数据不带 TTL 会让旧值长期驻留,后续数据更新后仍可能读到过期内容;回填时统一设置与业务一致的过期时间。

易错点

  • 无预热直接全量放量:数据库或后端被首轮回源打崩,故障从一个组件扩散到整条链路
  • 预热数据不带 TTL:旧值长期驻留,业务读到过期数据且不易察觉
  • 热点清单长期不更新:预热了大量已冷的数据,真正的热点仍在回源
  • 预热与发布耦合:预热耗时拖慢上线,失败时连带阻塞业务交付

数据来源与参考

  • Redis 官方实践:缓存预热
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌