34 lines
614 B
Markdown
34 lines
614 B
Markdown
|
|
# 缓存异常
|
||
|
|
|
||
|
|
**缓存雪崩**
|
||
|
|
|
||
|
|
> “雪崩”:多
|
||
|
|
|
||
|
|
- 大量缓存数据在同一时期过期 or Redis 故障宕机
|
||
|
|
- 数据库压力骤增
|
||
|
|
|
||
|
|
*解决方案——*
|
||
|
|
- 随机数
|
||
|
|
- 互斥锁
|
||
|
|
- 缓存预热/后台线程通知更新
|
||
|
|
|
||
|
|
**缓存击穿**
|
||
|
|
|
||
|
|
> “击穿”:强度
|
||
|
|
|
||
|
|
- 某个热点数据过期
|
||
|
|
|
||
|
|
*解决方案——*
|
||
|
|
- 互斥锁
|
||
|
|
- 缓存预热/后台线程通知更新
|
||
|
|
|
||
|
|
**缓存穿透**
|
||
|
|
|
||
|
|
> “穿透”:主观、有目的
|
||
|
|
|
||
|
|
- 用户访问的数据,既不在缓存中,也不在数据库中
|
||
|
|
|
||
|
|
*解决方案——*
|
||
|
|
- 限制非法请求
|
||
|
|
- 缓存空值或者默认值
|
||
|
|
- 布隆过滤器判断数据是否存在
|