Redis雪崩,击穿,穿透理解及处理

雪崩

        定义:大量请求无法在Redis缓存中进行处理,比如Redis挂了,请求发送到数据库层,导致数据库压力过大

        原因分析:

  1. 大量数据同时过期导致的请求无法处理转而请求数据库
  2. Redis宕机

        解决方案: 

        针对原因一 

  1.  过期时间加随机值,即加随机1-5分钟内过期
  2.   服务降级,非核心业务不访问缓存直接返回空,繁忙或预定义信息,核心业务允许查询缓存,缓存缺失可以继续查询数据库             

         针对原因二

  1. 熔断,暂时停止访问缓存避免缓存雪崩导致的数据库雪崩,限流,控制请求量,避免过多请求发送到数据库
  2. 提前构建高可用的Redis集群,实现主从及哨兵(防止主从架构宕机的情况)

 击穿

        定义:热点key过期导致的失效瞬间直接请求发送到了数据库从而导致的数据库压力激增,从而影响其他的请求

        原因分析:热点数据过期,通常发生在大量数据缓存过期的时候,同步发送到了数据库

        解决方案:热点数据不设置过期时间

穿透

        定义:访问的数据既不在数据库也不在缓存内,导致在访问缓存时发生缓存缺失,在访问数据库也没有对应的数据,结果也就不会写入缓存,大量的请求时会同步请求数据库导致数据库产生巨大压力

        原因分析:

  1. 数据误删,业务层异常,导致的缓存和数据库内都没有数据
  2. 恶意攻击,访问数据库内没有的数据,增加数据库压力

         解决方案:

  1. 没查到就设置一个空值到缓存内并设定对应的过期时间,下次同样的key访问可直接从缓存内取数据
  2.  入口前端进行请求检测,比如参数合法性
  3. 布隆过滤器提前判断数据是否存在,减轻数据库压力     (布隆过滤器:判断一个元素是否存在于一个集合中,存在误判)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值