Redis的缓存雪崩以及缓存穿刺

缓存雪崩

什么是缓存雪崩呢

缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求。 这就好比雪崩一样,摧枯拉朽之势,数据库的压力可想而知,可能直接就被这么多请求弄宕机了

针对 Redis 服务不可用的情况:

  1. 采用 Redis 集群,避免单机出现问题整个缓存服务都没办法使用。
  2. 限流,避免同时处理大量的请求。

针对热点缓存失效的情况:

  1. 设置不同的失效时间比如随机设置缓存的失效时间。
  2. 缓存永不失效。

但是缓存时间的应用也不是特别好,因为对于这个缓存时间的应用实际上还是比较多的,比如在对于验证码验证登陆的情况,我们平常使用的验证码的登录也是需要有一定的失效时间的,如果设置了比较长的缓存时间可能就会导致没有办法达到需要使用的效果。但是如果把这个设置在传统的数据里的话,肯定是就是需要自己来判断过期,这样更麻烦并且性能要差很多。

缓存穿透

什么是缓存穿透呢?
其实这个问题如果理解了Redis 的数据判断流程就很好理解了
在这里插入图片描述

那么穿透就是透过了缓存直接进入数据库的这个操作就是缓存穿透

怎么解决

最基本的就是首先做好参数校验,一些不合法的参数请求直接抛出异常信息返回给客户端。比如查询的数据库 id 不能小于 0、传入的邮箱格式不对的时候直接返回错误消息给客户端等等。

或者由于需要判断缓存是否存在这个数据,我们可以做一个那个布隆过滤器,因为Redis是有key-value结构的数据,需要有判断key值才能获取到数据的,那么这个时候我们就可以通过判断这个key值是否是合理的来判断这个请求是否正常,如果没有再这个合理的key的合理范围就返回一个异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值