声明:本站文章均为作者个人原创,图片均为实际截图。如有需要请收藏网站,禁止转载,谢谢配合!!!

1.缓存击穿

大量请求持续同时访问同一个key,在key失效的一瞬间,将会访问数据库,造成数据库数据量激增。
解决方案:重要热点数据永不过期【过期时间设置长一些,或者在快要过期的时候重新构建缓存】

2.缓存穿透

请求的数据既不存在于redis中,也不存在于数据库中,一般属于恶意攻击
解决方案:

  • 使用过滤器
    布隆过滤器专门用来检测集合中是否存在特定的元素,从而判断key是否存在

3.缓存雪崩

大量key同时或同一时间段内过期,造成数据库压力增大甚至宕机。
和缓存击穿不同的一点是,缓存击穿是同一个key过期,而缓存雪崩是大量的key过期
解决方案:

  • 均匀过期
    设置不同的过期时间,避免产生大量key同时失效
  • 加互斥锁
    构建缓存时只能有一个线程构建缓存,其他线程阻塞排队