缓存策略设计实现Skill
适用场景
引入或治理 Redis 缓存:缓存模式选择、key 设计规范、失效策略、穿透/击穿/雪崩防护、一致性处理与监控。
执行步骤
- 模式选择:读多写少→Cache Aside(旁路缓存,最常用);对一致性敏感→更新 DB 后删缓存+延迟双删兜底;写多读少不建议缓存。
- key 设计:统一格式
业务域:子域:业务ID[:版本],禁止过短冲突与过长无意义;禁止大 key(单 value 超过 10KB 需评估)、禁止全量扫描命令。 - 失效策略:TTL + 主动删除双轨;TTL 按数据变更频率分级设定;版本号用于批量失效。
- 穿透防护:空值缓存(短 TTL)兜底,高并发热点用布隆过滤器预判;非法参数在入口校验拦截。
- 击穿防护:热点 key 用互斥锁重建或逻辑过期(需验证适用场景),重建仅一个线程执行,其余等待或返回旧值。
- 雪崩防护:TTL 加随机抖动、多级缓存(本地+Redis)、限流降级保底。
- 一致性:先更新 DB 后删缓存;延迟双删兜底;强一致场景禁用缓存或走 MQ 异步刷新。
- 监控:命中率、key 数量、大 key、内存使用率、慢查询告警。
规范要点
- 缓存必须可降级:Redis 不可用时业务可走 DB 或限流保护,禁止缓存故障拖垮全链路。
- 序列化统一(JSON/Protobuf 选一种),版本变更兼容旧数据。
- 禁止缓存用户敏感信息明文;敏感数据加密或只缓存脱敏字段。
- 缓存值禁止存储大对象与完整列表,拆分按需缓存。
- key 必须带业务域前缀,便于清理、隔离与成本归属。
- 所有缓存操作设超时,禁止无超时阻塞业务线程。
输出模板
## 缓存方案
模式选择:Cache Aside 等 + 适用说明
key 规范表:业务域前缀/示例/过期策略
防护措施:穿透/击穿/雪崩各用了哪些手段
一致性方案:更新顺序 + 双删/刷新机制
监控指标:命中率目标 + 告警阈值
自检清单
- 模式与业务读写特性匹配
- key 规范统一,无大 key/敏感明文
- 穿透/击穿/雪崩三类防护齐全
- 一致性方案明确,可降级不拖垮业务
- 命中率与内存有监控告警