2022年01月07日整理发布:一起学习Redis缓存穿透、缓存击穿、缓存雪崩的原理和解决办法

推荐(免费):redis缓存穿透:键中对应的缓存数据不存在,导致请求数据库

推荐(免费):redis

缓存穿透:键中对应的缓存数据不存在,导致请求数据库造成数据库的双重压力。

缓存崩溃:redis过期后的瞬间,大量用户请求相同的缓存数据,导致所有这些请求都请求数据库,给数据库带来了双倍的压力。为了一把钥匙,


(资料图片仅供参考)

缓存雪崩:缓存服务器宕机或大量缓存集在一定时间内失效,导致所有请求都去数据库,数据库压力翻倍的情况。这是多把钥匙。

一、缓存穿透的解决方案

常用的方法可以使用布隆过滤器拦截数据。其次,还有一个解决方案,就是如果请求的数据为空,缓存空值,不会有穿透?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

类getPrizeList {

/**

* redis实例

* @var \Redis

*/

私有$ redis

/**

* @var字符串

*/

private $ redis _ key=" | prize _ list ";

/**

*到期时间

* @var int

*/

private $ expire=30

/**

* getPrizeList构造函数。

* @param $redis

*/

公共函数__construct($redis)

{

$ this-redis=$ redis;

}

/**

* @返回数组| bool |字符串

*/

公共函数提取

{

$ result=$ this-redis-get($ this-redis _ key);

if(!isset($ result)){ 0

//应该在这里进行数据库查询。

//如果查询结果不存在,缓存其默认的空数组。

$ result=[];

$ this-redis-set($ this-redis _ key,$result,$ this-expire);

}

返回$ result

}

}二、缓存崩溃的解决方案

使用互斥键,即当一个键过期时,多个请求来允许一个请求操作数据库,其他请求等待第一个请求成功返回结果后再请求。服务器端编程语言(Professional Hypertext Preprocessor的缩写)

类getPrizeList {

/**

* redis实例

* @var \Redis

*/

私有$ redis

/**

* @var字符串

*/

private $ redis _ key=" | prize _ list ";

/**

* @var字符串

*/

private $ setnx _ key=" | prize _ list _ setnx ";

/**

*到期时间

* @var int

*/

private $ expire=30

/**

* getPrizeList构造函数。

* @param $redis

*/

公共函数__construct($redis)

{

$ this-redis=$ redis;

}

/**

* @返回数组| bool |字符串

*/

公共函数提取

{

$ result=$ this-redis-get($ this-redis _ key);

if(!isset($ result)){ 0

if($ this-redis-setnx($ this-setnx _ key,1,$ this-expire)){ 0

//应该在这里进行数据库查询。

//$result=数据库查询结果;

$ this-redis-set($ this-redis _ key,$result,$ this-expire);

$ this-redis-del($ this-setnx _ key);//删除互斥体

} else {

//其他请求每10毫秒重新请求一次。

睡眠(10);

self:fetch

}

}

返回$ result

}

}三、缓存雪崩的解决方案

这种情况是由于多个密钥同时过期造成的数据库压力。一种方法可以在密钥到期时间的基础上增加随机次数,以扩展到期时间,降低缓存时间到期的重复率。另一种方法是锁定和排队,有点像上面的缓存崩溃的解决方案。然而,请求的数量太大,例如5,000个请求到来,4,999个请求等待。这势必是一个永久性的问题,不仅用户体验差,在分布式环境下更是雪上加霜。因此,复杂性很少用于高并发场景。最好的解决方案是使用缓存标签来确定标签是否过期,然后请求数据库,缓存数据的过期时间应该设置得比缓存标签的过期时间长。所以当一个请求操作数据库时,其他请求会获取最后一个缓存的数据?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

类getPrizeList {

/**

* redis实例

* @var \Redis

*/

私有$ redis

/**

* @var字符串

*/

private $ redis _ key=" | prize _ list ";

/**

*缓存标签密钥

* @var字符串

*/

private $ cash _ key=" | prize _ list _ cash ";

/**

*到期时间

* @var int

*/

private $ expire=30

/**

* getPrizeList构造函数。

* @param $redis

*/

公共函数__construct($redis)

{

$ this-redis=$ redis;

}

/**

* @返回数组| bool |字符串

*/

公共函数提取

{

$ cash _ result=$ this-redis-get($ this-cash _ key);

$ result=$ this-redis-get($ this-redis _ key);

if(!$ cash _ result){ 0

$this-redis-set($this-cash_key,1,$ this-expire);

//应该在这里进行数据库查询。

//$result=数据库查询结果,设置时间比cash_key长,这里设置为2倍;

$ this-redis-set($ this-redis _ key,$result,$ this-expire * 2);

}

返回$ result

}

}以上就是一起学习Redis缓存穿透、缓存击穿、缓存雪崩的原理和解决方案的详细内容!

来源:php中文网站

标签:

相关阅读

六代中医传人张喜海:守正中医创新治骨...

张医生,我们是专门过来找您看病的张院长,你看看我的病还能治吗?治骨病,找张喜海医生 纷杂的诊室...

2019-12-17 更新

庆70华诞 迎民族盛会——新阶层 新担...

拼搏砥砺七十载,大展宏图喜露颜。7月26日,由中华网河南频道主办,河南省委统战部新的社会阶层人士统战工作处...

2019-07-28 更新

河南首家无人机表演编队亮相 夜空中上...

【导语】河南地图、少林功夫、司母戊鼎、甲骨文、卢舍那大佛、鲸鱼、金字塔、雪花……200架无人机编队在夜空中...

2019-07-15 更新

2022年01月07日整理发布:一起学习Redis...

推荐(免费):redis缓存穿透:键中对应的缓存数据不存在,导致请求数据库

2023-08-04 更新

天津市商务局坚持以企业需求为导向推动...

天津市商务局电商处党支部抓住主题教育与自身实际的结合点,在调查研究

2023-08-04 更新

海南出台稳就业措施:扩大政策性岗位规...

海南出台稳就业措施:扩大政策性岗位规模拓宽市场化就业渠道-8月4日,

2023-08-04 更新

爱旭股份:下属子公司拟与珠海迈科斯签...

爱旭股份公告,下属子公司浙江爱旭拟与珠海迈科斯签署《设备采购合同》

2023-08-04 更新

027是哪里的区号是干嘛的(027是哪个城...

今天小鱼来为大家解答以上问题,027是哪里的区号是干嘛的,027是哪个城

2023-08-04 更新

房屋财产被淹,中图网遭“毁灭打击”!...

房屋财产被淹,中图网遭“毁灭打击”!保险怎么止损?

2023-08-04 更新

全新设计更霸气,全新红旗HS7预售仅25.98万起

作为一汽红旗品牌推出的首款中大型SUV,红旗HS7的换代车型于近日开启预

2023-08-04 更新

硬核品质征服荒漠戈壁,奔腾T99承载无数...

对于很多自驾游爱好者来说,西藏是生命中至少要奔赴一次的朝圣之地,无

2023-08-04 更新

续航超1200Km,智能化达到行业顶级,新...

此外,新款岚图FREE搭载了业界首个L4赋能的apollo智能辅助驾驶系统,在

2023-08-04 更新

出海竞争,Zeekr 开始为欧洲生产 001

现在,随着Zeekr001开始在欧洲生产,该品牌特别宣布将德国、挪威、丹麦

2023-08-04 更新

|XM| 中文在线直播课程,今日预告(8/4)

在众多策略中,网格交易法属于最简单的一类,而且也最适合散户的交易策

2023-08-04 更新

海陆重工: 独立董事关于控股股东及其他...

海陆重工:独立董事关于控股股东及其他关联方占用公司资金、公司对外担

2023-08-04 更新

例假推迟了十天怎么回事_例假推迟十天正...

月经推迟了10天。如果你有性生活,而且在性生活中没有采取避孕措施,首

2023-08-04 更新

海口琼山区持续优化营商环境 为经济社...

商报全媒体讯(椰网 海拔新闻记者王辉通讯员许晶亮王伦龙泉摄影报道)推

2023-08-04 更新

第二届“你好,天津”网络短视频大赛“...

津云新闻讯:由天津市委宣传部、市委网信办、海河传媒中心主办,津云新

2023-08-04 更新

海陆重工:2023年上半年净利润同比增长10.5%

海陆重工:2023年上半年净利润同比增长10 5%:海陆重工(002255)发布

2023-08-04 更新

《2022年度上海金融检察白皮书》: 金...

今天,上海市人民检察院发布《2022年度上海金融检察白皮书》(以下简称

2023-08-04 更新

吉林大学等多所高校启动受灾学生救助工作

近日,受今年第5号强台风“杜苏芮”影响,京津冀地区多地遭受洪水灾害

2023-08-04 更新

10元买极光筋斗云洁面泡沫100ml

亲爱男友品牌的极光筋斗云洁面发泡啫喱100ml,日常售价为49元,现在有3

2023-08-04 更新

刘德华携手奥迪A8L一如既往的支持年轻人

奥迪A8L并不是一个外表浮华的“偶像”,拥有跑车基因的奥迪A8L在动力总

2023-08-04 更新

分家之后就互掐?路虎首款轿车曝光 捷...

外媒近日曝光了一辆路虎的轿车图,据介绍,这台车将会是路虎品牌的首款

2023-08-04 更新

广汽丰田拟与丰田中国、小马智行成立合...

(2023年8月4日)广汽丰田汽车有限公司、丰田汽车(中国)投资有限公司

2023-08-04 更新

汽车维修工证快速拿证,费用低,取证快...

本文将介绍汽车维修工证的作用、考取方式以及费用。作为一名汽车维修专

2023-08-04 更新

如何让孩子快乐早起?

在人生的中途,我迷失了方向,发现自己置身于一片黑暗的森林。——

2023-08-04 更新

自然经济解体(自然经济)

然经济解体,自然经济这个问题很多朋友还不知道,来为大家解答以上的问

2023-08-04 更新

遗迹2无形者的地下室钥匙在哪里-无形者...

  遗迹2是一款非常好玩的第三人称射击游戏,很多玩家想知道遗迹2无形

2023-08-04 更新

二氧化铅与浓盐酸反应(二氧化铅阳极简介)

HELLO,我是智能手机网小溪,我来为大家解答以上问题。二氧化铅与浓盐

2023-08-04 更新

铁力市构建数字化水利新体系

铁力市以深化能力作风建设“工作落实年”活动为契机,积极探索水利数字

2023-08-04 更新

逆势突围,凯迪拉克CT5国内累计用户超20万

据了解,自2019年上市以来,CT5凭借超越同级的豪华质感和后驱驾控深受

2023-08-04 更新

“新国潮MPV”到底“长”什么样?江淮瑞...

随着消费水平的不断提高,汽车市场竞争也越来越激烈。卷价格,卷配置,卷

2023-08-04 更新

新闻频道

社会

财经频道