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

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

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

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

缓存雪崩

什么是缓存雪崩呢

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

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

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

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

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

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

缓存穿透

什么是缓存穿透呢?
其实这个问题如果理解了Redis 的数据判断流程就很好理解了

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

怎么解决

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1027864.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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