← 返回生产场景

⚡ 缓存设计

多级缓存 / 一致性 / 穿透击穿雪崩 / 热点Key

🏠Cache-Aside 读写模式基础
读:先查缓存,miss 查DB回写。写:先更DB再删缓存(不是更新缓存)。
// 读 public User get(Long id) { User u = redis.get(key); if (u == null) { u = db.findById(id); redis.set(key, u, 30min); } return u; } // 写 public void update(User u) { db.update(u); redis.del(key); }
延迟双删:删缓存→更DB→等500ms→再删一次(防并发读到旧值回写缓存)。
💢穿透/击穿/雪崩必问
问题现象解法
穿透查不存在的,每次打DB缓存空值 / 布隆过滤器
击穿热点key过期瞬间打DB互斥锁(只放一个查DB)
雪崩大量key同时过期TTL加随机值
🔥热点Key
某key QPS几十万,单分片扛不住。
// 多副本key:把一个key拆成多个,分散到不同分片 int n = 10; String key = "hot:" + id + ":" + random.nextInt(n); // 本地缓存下沉到Caffeine,大部分请求不打Redis
生产场景 · 缓存设计 · 全栈资料库