中间件速查手册
缓存与 KV 存储Cache Breakdown

缓存击穿 是什么?

单个热点 key 过期的瞬间,大量请求同时回源

类比:超市最火的商品刚卖完,所有人一起冲进仓库

典型场景

首页 banner 的 key 过期,瞬时几万个请求同时发现缓存没了,全部去查数据库,数据库瞬间被打满。

两种解法

一个是让只有一个请求去查,一个是干脆不设过期。

  • 互斥锁:第一个请求 SETNX 抢锁去查库,其余请求等待或返回旧值
  • 逻辑过期:value 里存过期时间,物理上永不过期;发现逻辑过期时异步刷新,先返回旧数据
  • 热点数据预热 + 定时刷新,从根本上避免失效瞬间

取舍

互斥锁实现简单,但等待的请求会变慢;逻辑过期响应快,但会短时间返回旧数据。对一致性要求不高的商品详情,逻辑过期体验更好。

它出现在这些中间件里

相关概念