Redis缓存 缓存穿透+缓存雪崩+缓存击穿的原因及其解决方案
创始人
2024-03-22 03:53:48

Redis缓存 缓存穿透+缓存雪崩+缓存击穿的原因及其解决方案

文章目录

  • Redis缓存 缓存穿透+缓存雪崩+缓存击穿的原因及其解决方案
  • 一、缓存穿透是什么?
    • 解决方案:
  • 二、缓存雪崩是什么?
    • 解决方案
  • 三、缓存击穿是什么?
    • 解决方案


一、缓存穿透是什么?

缓存穿透是指查询一个根本不存在的数据,缓存层和持久层都不会命中。在工作中如果持久层通过查不到数据就则不写入缓存层,缓存穿透导致每次请求都要到持久层中去查询,失去了缓存保护后端持久的意义。
缓存穿透示意图:
在这里插入图片描述

解决方案:

1、缓存空对象
缓存空对象,在持久层没有命中情况下,对key进行set(key,null)
但缓存空对象也存在问题,一:value为空并不意味着不占用内存空间,空值做了缓存,意味着缓存了更多的键,需要更多的存储空间,可以对这类数据设置较短的过期时间,让其自动剔除。
2、布隆过滤器拦截
在访问持久层和缓存层之前,将存在的key用布隆过滤器提前保存起来,做第一层拦截,当收到一个对key请求时先用布隆过滤器验证是否存在,如果存在再写入布隆过滤器。

方案对比:
在这里插入图片描述

二、缓存雪崩是什么?

由于缓存层承载着大量请求,有效保护了存储层,但是如果缓存层由于某些原因不可用(宕机)或者大量缓存在同一时间内全部失效,大量请求这接到达存储层,存储压力过大导致缓存雪崩。

解决方案

1、缓存的过期时间设置随机值,尽量用不同的key过期时间不同。
2、可以采用多级缓存,本地进程设置一级缓存,redis作为二级缓存,不同级别的缓存设置的超时时间不同,及时某级缓存过期了,也有其他级缓存兜底

三、缓存击穿是什么?

1、当前的key是一个热点key(例如一个秒杀活动),并发量非常大。
2、重建缓存不能在短时间内完成,可能是一个复杂计算,例如多个sql,多个io,多个依赖等;
在缓存失效的瞬间,有大量线程来重建缓存,造成后端负载过大,甚至可能让应用崩溃;

解决方案

1、分布式互斥锁
只允许一个线程重建缓存,其他线程等待重建缓存的线程执行完,重新从缓存获取数据即可。set(key,value,timeout)
在这里插入图片描述
2、永不过期
1、确实没有设置过期时间,所以不会出现热点key过期后产生的问题,也就是“物理”不过期。
2、为每个value设置一个逻辑过期时间,当发现超过逻辑过期时间后,会使用单独的线程去更新缓存
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...