栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

redis缓存雪崩 击穿 穿透

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

redis缓存雪崩 击穿 穿透

一:缓存雪崩

缓存雪崩表示在某一时间段,缓存集中失效,导致请求全部走数据库,有可能搞垮数据库,使整个服务瘫痪。

使缓存集中失效的原因:

  1. redis服务器挂掉了
  2. 对缓冲数据设置了相同的过期时间,导致某时间段内缓冲集中失效

如何解决缓冲集中失效:

  1. 针对原因1,可能实现redis的高可用,Redis Cluster 或者 Redis Sentinel(哨兵)等方案
  2. 针对原因2,设置缓冲过期时间时加上一个随机值,避免缓冲在同一时间过期
  3. 使用双缓冲策略,设置两个缓存,原始缓存和备用缓存,原始缓存失效时,访问备用缓存,备用缓存失效时间设置长点

二:缓存穿透

缓存穿透表示查询一个一定不存在的数据,由于没有获取到缓存,所以没写入缓存,导致这个不存在的数据每次都需要去数据库查询,失去了缓存的意义

请求的数据大量的没有获取到缓存,导致走数据库,有可能搞垮数据库,使整个服务瘫痪

比如请求id,每次请求用了负数,就是数据库不存在的id

解决方案:

  1. 使用正则表达式,在前端就过滤不合适的请求 或者 使用过滤器

三:缓存击穿

缓存击穿表示某个key的缓存非常热门,有很高的并发一直在访问,如果该缓存失效,那就会走数据库,压垮数据库

缓存击穿与缓存雪崩的区别是这里针对的是某一个热门key缓存,而雪崩针对的是大量缓存的集中失效。

解决方案:

  1. 让该热门key的缓存永不过期
  2. 使用互斥锁,通过redis的setnx实现互斥锁
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343649.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号