一、缓存穿透
描述:
用户不断发出对缓存和数据库中不存在的数据的查询请求,以至于每次请求都会访问到数据库,从而压垮数据库。
解决方案:
- 业务层校验违法参数
- 对不存在数据设置短期过期时间加入缓存中
- 使用布隆过滤器
二、缓存击穿
描述:
缓存中一个热点key过期后,被大量请求访问,压垮数据库
解决方案:
- 设置热点key永不过期
- 定时更新
- 互斥锁
三、缓存雪崩
描述:
缓存中key大面积失效,或者Redis宕机,导致大量请求直接访问,压垮数据库
解决方案:
- 加锁阻塞
- 设置均匀分布的失效值
- 哨兵模式和集群模式实现redis高可用(在一个节点宕掉的时候有故障转移方案)