Redis缓存知识问题( 二 )
缓存击穿:
条件:对于一些设置了过期时间的key , 如果这些key可能会在某些时间点被超高并发地访问 , 是一种非常“热点”的数据 。 这个时候 , 需要考虑一个问题:缓存被“击穿”的问题 , 这个和缓存雪崩的区别在于这里针对某一key缓存 , 前者则是很多key 。
缓存在某个时间点过期的时候 , 恰好在这个时间点对这个Key有大量的并发请求过来 , 这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存 , 这个时候大并发的请求可能会瞬间把后端DB压垮
解决方案:
使用互斥锁(mutex key)
业界比较常用的做法 , 是使用mutex 。 简单地来说 , 就是在缓存失效的时候(判断拿出来的值为空) , 不是立即去load db , 而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key , 当操作返回成功时 , 再进行load db的操作并回设缓存;否则 , 就重试整个get缓存的方法 。
推荐阅读
- s6|金铲铲之战:S6双城传说如何才能快速上手?基础知识很关键
- edg战队|《英雄联盟》全球总决赛冷知识:S11冠军EDG输了八个小局
- edg战队|S11世界赛EDG夺冠后,热点知识分享:Meiko成为LPL唯一大满贯选手
- 我的世界|我的世界:萌新必备“冷知识”,看似废物的钟,却是单冰道船必备
- fate grand order|FGO角色名字大改,都按照历史知识命名,没有偏离原型设定
- gt赛车7|三国杀:有关陆抗的一些冷门知识
- 剑网3|剑网三冷知识
- 冷知识|我的世界:无聊的冷知识,史蒂夫跌落高度的极限,猪灵幼崽长不大
- |大飞说文玩:猴头手串“凤羽”小知识讲解,喜欢的朋友可以看看
- 哈利·波特|梗知识:伟奶生,谜一大