---
name: caching
when: '缓存策略, 缓存, cache, Redis, 热点数据, 查询优化, 缓存穿透, 缓存雪崩, @Cacheable, 缓存一致性'
scope:
  - backend
products:
  - '*'
id: ka-pattern-caching
asset_kind: pattern
lifecycle_status: active
authority: supporting
routes:
  - '*'
primary_triggers:
  - 缓存策略
  - 缓存
  - cache
  - Redis
  - 热点数据
  - 查询优化
  - 缓存穿透
  - 缓存雪崩
  - '@Cacheable'
  - 缓存一致性
priority: P2
specificity: 3
version: 1.0.0
last_reviewed: '2026-05-22'
consumes: []
emits: []
secondary_triggers: []
negative_triggers: []
type: pattern
status: active
---

## 决策规则
- 所有缓存必须设置 TTL，禁止永久缓存
- 热点数据 TTL 必须加随机偏移防止雪崩
- 缓存 key 格式必须统一：模块:业务:id
- 查询不存在的数据必须缓存空值或使用布隆过滤器防止穿透
- 写操作必须同步更新或失效缓存，保证一致性
- 缓存重建必须使用分布式锁或 singleflight 模式，防止缓存击穿导致 DB 过载
- 缓存值禁止存储大对象（建议 ≤ 1MB），大对象应只缓存 key 引用
- 缓存操作必须设置超时时间，防止 Redis 阻塞拖垮业务线程
- 禁止缓存中存储敏感信息（密码、token、身份证号），或必须加密后存储
- 缓存命中率必须纳入监控，命中率低于阈值时触发告警
- 本地缓存（Caffeine/Guava）与分布式缓存的数据一致性策略必须明确

## 验收项
- [AC-01] 所有缓存 key 有 TTL
- [AC-02] 热点数据 TTL 加随机偏移
- [AC-03] 缓存 key 格式统一
- [AC-04] 有穿透/雪崩防护措施
- [AC-05] 缓存重建有分布式锁保护
- [AC-06] 缓存值不超过 1MB
- [AC-07] 缓存操作有超时设置
- [AC-08] 缓存中无明文敏感信息
- [AC-09] 缓存命中率有监控告警
