缓存穿透
当访问的数据在缓存中不存在,且查询数DB也不存在,导致每次请求都会访问到DB,从而压垮DB.
解决方案:
- 对空值缓存
- 布隆过滤器
- 设置白名单过滤(bitmaps)
缓存击穿
当某个热点key过期,这时有大量请求过来,没有命中缓存,都请求到了DB上,导致DB瞬时压力增大,压垮DB。
解决方案:
- 预先设置热门数据,适当调整过期时间
- 使用分布式锁控制
缓存雪崩
当大量的缓存失效或redis服务器宕机,导致请求都到了DB上,从而压垮DB
解决方案:
- 集群部署(解决宕机问题)
- 使用分布式锁(高并发下性能会降低)
- 将缓存失效时间错开,或监控缓存过期,提前更新缓存