Redis缓存穿透,缓存击穿和缓存雪崩--A8站 源码交易平台

  • 时间:2020-03-29 09:42 编辑:益达 来源:原创 阅读:163
  • 扫一扫,手机访问
摘要:解决方法 1.缓存数据的过期时间设置随机,避免同一时间很多数据过期现象发作。 2.假如缓存数据库是分布式部署,将热门数据均匀分布在不同搞得缓存数据库中。 3.设置热门数据永久不过期。

A8站 源码交易平台

一、缓存处理流程


处理Reids缓存引发的问题时,我们首先得知道缓存处理的一个流程,如下图:

1.png
二、缓存穿透,缓存击穿和缓存雪崩

缓存穿透
描绘:缓存穿透是指缓存和数据库中都没有的数据,而用户不断建议请求,如建议为id为“-1024”的数据或id为特别大不存在的数据。这时的用户很可能是进犯者,进犯会导致数据库压力过大。
解决方法:
1.接口层增加校验,如用户鉴权校验,id做根底校验,id<=0的直接阻拦;
2.从缓存取不到的数据,在数据库中也没有取到,这时也能够将key-value对写为key-null,缓存有效时间能够设置短点,如30秒(设置太长会导致正常状况也无法运用)。这样能够避免进犯用户反复用同一个id暴力进犯
3.采用布隆过滤器,将一切可能存在的数据哈希到一个足够大的bitmap中,一个必定不存在的数据会被 这个bitmap阻拦掉,然后避免了对底层存储系统的查询压力。

A8站 源码交易平台


缓存击穿
描绘:缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
解决方法
1.设置热门数据永久不过期
2.加互斥锁,互斥锁参考代码如下:

public String get(key) {
      String value = redis.get(key);
      if (value == null) { //代表缓存值过期
          //设置3min的超时,避免del操作失败的时候,下次缓存过期一向不能load db
            if (redis.setnx(key_mutex, 1, 3 * 60) == 1) {  //代表设置成功
                     value = db.get(key);
                      redis.set(key, value, expire_secs);
                      redis.del(key_mutex);
              } else {  //这个时候代表同时候的其他线程现已load db并回设到缓存了,这时候重试获取缓存值即可
                      sleep(50);
                      get(key);  //重试
              }
          } else {
              return value;      
          }
 }

缓存雪崩
描绘:缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大乃至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,许多数据都查不到然后查数据库。A8站 源码交易平台
解决方法
1.缓存数据的过期时间设置随机,避免同一时间很多数据过期现象发作。
2.假如缓存数据库是分布式部署,将热门数据均匀分布在不同搞得缓存数据库中。
3.设置热门数据永久不过期。

A8站 源码交易平台


  • 全部评论(0)
最新发布的资讯信息
【A8站-免费源码分享|直播源码】直播系统源码开发:关于安卓开发工具和obs直播推流(2020-10-30 09:41)
【计算机/互联网|】【独家修复】用户定制版短视频点赞系统,支持抖音+快手+刷宝+微视等所有主流短视频评论系统源码(2020-10-26 16:34)
【技术宅-为技术而疯|网站架设教程】【独家首发】最新更新已对接短信2020全新抖音快手点赞任务系统霸屏天下小红书头条威客兼职完整搭建架设视频教程(2020-10-25 13:56)
【技术宅-为技术而疯|网站架设教程】最新可用个人发卡网系统源码完整搭建架设视频教程(2020-10-25 10:53)
【技术宅-为技术而疯|网站架设教程】独家更新全新V10抢单系统唯品会京东淘宝自动抢单区块系统源码全开源抢单收单接单返利+搭建架设完整视频教程(2020-10-25 10:52)
【计算机/互联网|】柔丫纸尿裤云仓系统源码部署(2020-10-15 18:13)
【计算机/互联网|】侏罗纪软件模式定制开发(2020-10-14 15:33)
【计算机/互联网|】S2b2C供应商系统 营销闭环(2020-10-10 17:46)
【计算机/互联网|程序设计开发】盛都汇系统奖励机制(2020-10-10 17:20)
【A8站-免费源码分享|网站源码】积分商城系统APP开发(2020-09-23 14:56)
联系我们
Q Q:3101359898 点击直接对话
电话:18580901894
邮箱:admin#a8zhan.com
时间:09:00 - 24:00
手机二维码 访问手机版
返回顶部