面试常问——什么是redis缓存穿透、缓存雪崩和缓存击穿,解决方式是什么?
创始人
2024-04-12 13:02:33
0

缓存穿透:

概念:使用缓存和数据库中都没有的数据去做请求,比如使用id=-1的数据去请求造成了穿透缓存,打在了数据库上,访问数量一多,导致数据库挂掉的现象

例子:某个网站做的好了,某同行嫉妒心爆棚,找了一个脚本去使用错误的id去冲击该网站。因为这个请求在数据库中没有,所以查不到数据,也就不会去缓存到redis中,所以每次请求都是请求的数据库,当数量一多,数据库就绷不住了,就直接挂了。导致这个网站都崩了。

解决方式:
方式一:如果请求穿透redis,直接到数据库查询,无论从数据库中返回什么值,都缓存到redis中,导致同一个非法id无法穿透redis
坏处就是可以换不同的id继续操作
方式二:当同一个ip多次造成缓存穿透,直接把它ip拉黑
和上面的一样,坏处就是可以换不同的ip继续操作
方式三:对参数的合法性进行校验,在判断参数不合法的时候直接return
方式四:使用布隆过滤器(最推荐)


缓存雪崩:

概念:大量的redis缓存在同一时间全部失效,大量的key请求到数据库上导致数据库响应不及时,然后挂掉。

例子:某宝,双11的时候,用户基量特别大,难免会出现某一秒大量的数据被缓存到redis中,而这些数据的失效时间都是同一刻。假设2小时失效,2小时候这些数据就失效了,而这时又大量的用户还在访问,导致大量的请求请求到数据库上,它又绷不住了,直接GG。

解决方式:
方式一:设置缓存的失效时间,让他不要在同一时间失效。在设置缓存的时候,随机初始化它的缓存时间
方式二当redis集群部署时,把热点key放到不同的节点上去,让这些热点的缓存平均分布在不同的redis节点上
方式三(暴力解决):不设置缓存时间,让它永远都不失效
方式四设置一个定时任务,让他定时的去刷新这些缓存,在缓存失效之前把redis缓存重新写进去,再设置缓存时间


缓存击穿:

概念:突然某key失效,一瞬间大量该key的请求打到了数据库上,导致数据库响应不及时,然后挂掉

例子:某个网上拍卖,将数据存到了redis上,假设失效时间为2小时,好多人在哪里乒铃乓啷的竞价,2小时过去了,这个数据突然失效,而现在竞价还没结束,又是大量的数据直接请求到数据库上去,数据库又又又“炸”了。

解决方式:
方式一设置缓存时间为永不失效(不推荐)
方式二使用分布式锁,在redis去数据库查询数据时,加上一个锁,只有一个线程会抢到这个锁,只有这一个线程会操作数据库,其他线程都在redis中沉睡几毫秒,当去访问数据库的线程把数据查询后,数据库将数据缓冲到redis中,其他线程再去redis中查询数据,就不会导致大量请求打到数据库上导致数据库挂掉(推荐)


相关内容

热门资讯

个人销售住房增值税政策来了 12月29日,财政部、国家税务总局发布“关于个人销售住房增值税政策的公告”。 个人(不含个体工商...
南京拟修订法规加强历史文化名城... 原题:保护利用将设“正负面清单” 《南京市历史文化名城保护条例》将迎大修 南京市历史文化名城保护法规...
《深圳公益诉讼检察工作白皮书(... 深圳新闻网2025年12月31日讯(深圳特区报记者 上官文复 通讯员 李俞青)12月30日,深圳市人...
了解招生政策要选择官方渠道 石向阳 绘 日前,清华大学招生办公室发布声明称,有部分机构与个人冒用学校名义开展招生宣讲,散布不实招...
视频丨日学者:高市言行和政策令... 日本上智大学政治学教授中野晃一近日在接受总台记者采访时指出,高市早苗有关对华立场的言论将进一步破坏日...
10年受理公益诉讼案件线索超8... 深圳特区报讯(记者 上官文复 通讯员 李俞青)12月30日,深圳市人民检察院举办《深圳公益诉讼检察工...
日学者:高市言行和政策令日本面... 日本上智大学政治学教授中野晃一近日在接受总台记者采访时指出,高市早苗有关对华立场的言论将进一步破坏日...
袁家军、胡衡华、刘明胜、徐树彪... 据重庆日报消息,12月30日下午, 国家电投集团水电股份有限公司揭牌。重庆市委书记袁家军,市委副书记...
“3女带4孩续面”被改编成动画... 极目新闻记者 詹钘 近日,有网友发现,郑州续面事件已经被人改编成动画,在短视频平台和短剧平台播放。视...
征兵政策解读之二:征集条件篇 一、年龄条件 1.义务兵。男青年年满18 至22 周岁,普通高等学校本专科毕业生、符合毕业条件的毕业...