标准答案

  1. 缓存穿透指大量请求查询事实来源不存在的数据,缓存一直未命中并持续打到数据库;可用参数校验、短 TTL 空值缓存和布隆过滤器分层拦截。
  2. 缓存击穿指一个高并发热点 Key 在失效时,许多请求同时回源重建;可用请求合并、互斥重建、逻辑过期或提前预热控制回源并发。
  3. 缓存雪崩指大量 Key 在短时间集中失效,或整个缓存服务不可用,导致大范围流量回灌到数据库和下游;需要 TTL 抖动、容量隔离、限流、降级和多级缓存。
  4. 修复前要先确认实际症状:不存在 ID 比例、单 Key QPS、失效时间分布和缓存节点健康度分别对应不同类型,不能看到数据库打满就统一加锁。

题目解析

三者都会表现为缓存未命中和数据库压力上升,但保护层位置不同。穿透优先在入口拒绝无效请求,击穿优先控制一个 Key 的重建并发,雪崩优先保护整个系统的回源能力。

任何保护都要有边界。布隆过滤器会有误判,互斥锁会带来等待,逻辑过期会返回旧值;选择前需要说明对正确性、延迟和可用性的影响。

常见误区

  • 把热点 Key 失效当作缓存穿透,给每个请求都加布隆过滤器。
  • 使用全局互斥锁处理雪崩,反而让所有正常 Key 也被串行化。
  • 只扩数据库,不处理 TTL 集中失效和缓存节点故障。

作者信息