跳到主要内容

缓存击穿问题

一、问题描述​

描述: 缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会访问数据库。

危害: 无数的请求访问会在瞬间给数据库带来巨大的冲击,它会导致“单点故障引发全局性灾难”。

image

二、解决方案​

1.互斥锁(Mutex Lock,最常用)​

做法: 只允许一个 请求去数据库查询并重建缓存,其他请求等待 (自旋等待或阻塞)。等缓存重建好后,其他请求直接命中缓存。

image

2.逻辑过期(永不过期)​

做法: 不设置物理TTL,而是由后台异步线程 定时刷新缓存。数据永远有效,彻底杜绝“过期瞬间”的冲击。

image

3.方案对比​

image