redis经常遇到的三个问题以及解决方案

1.redis缓存穿透问题

      问题产生的原因:前段发起请求查询后端数据,由于这个查询条件没有结果数据,导致redis缓冲层跟mysql数据库都没查到数据,如果类似的请求并发量特别大,每次都需要查询Mysql,并且没有结果,也无法存储到redis缓存中,导致mysql需要承载大量的并发,有可能导致数据库出现宕机。

      解决方案:1)提前设置过滤条件,把非法查询请求直接过滤掉。

                         2)将查询不到的结果信息也存储到redis缓存中。                                                                         

2.redis缓存击穿问题

       问题产生原因:查询的key在redis中出现了过期,导致这个Key在redis中无法查询到,此时这个查询请求会击穿redis,进入到后台数据库中,正常情况是当redis缓存过期后,依然需要这个key值查询,可以再次查询mysql后将值重新保存到redis的缓存中,但是如果这个key对应的并发请求比较多,一旦这个key出现宕机,瞬间所有的并发请求全部都会请求到Mysql,此时可能导致mesql直接宕机。

       解决方案:通过互斥锁解决,让并发请求在后台阻塞,只让其中一个请求访问后台数据库,讲查询的结果再次缓存到redis中,然后放开所有的请求,此时所有的请求只会在redis中查询。

3.redis的雪崩问题  

       问题产生原因:让redis出现宕机,或者redis中的key大量出现集中过期,导致大量的并发请求集中打向后台数据库,从而导致数据库出现宕机。

       解决方案:1)如果出现redis宕机问题,可以采取哨兵模式,redis集群模式。

                          2)如果是大量key值出现集中过期:

                                方案一:通过在原有过期时间上再+上一些随机值,保证Key不会在同一时间                                                  大量出现过期。

                                 方案二:通过加锁或者队列的方式。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值