#DevOps

Redis 缓存击穿,我们这样兜底

由@jade-su发起讨论 · 发布于 2026年7月30日 · 更新于 2026年8月3日

热点 key 突然过期,瞬间几十个请求一起打数据库,差点把 Postgres 压垮。事后做了几层防护。

方案:

  • 互斥锁:缓存 miss 后只让一个请求查库,其它等待(setnx 实现)。
  • 逻辑过期:value 里带过期时间,过期后异步刷新,期间返回旧值。
  • 热点 key 永不过期,靠后台任务主动刷新。
ts
const lock = await redis.set("lock:k", "1", "NX", "EX", 5);
if (lock) { const v = await db.query(); await redis.set("k", v); }

现在又加了单机本地缓存(两级),彻底稳了。

大家的缓存击穿/穿透/雪崩都怎么防?

回复

暂时没有回复。

Related

相关推荐