紫影基地

 找回密码
 立即注册
查看: 412|回复: 0

(面试高频)Redis

[复制链接]
阅读字号:

22

主题

22

帖子

277

积分

超级版主

Rank: 8Rank: 8

积分
277
发表于 2021-11-7 09:04:17 | 显示全部楼层 |阅读模式
关于击穿、穿透和雪崩你真的了解麽?
相信你看完了以下我的介绍,会有所了解...

击穿

通俗的说击穿:前提是对某一key发生了高并发至redis,恰巧那么一瞬间key消失(过期时间/LRU/LFU),此时key的消失造成并发访问DB。
先上图,一张图抵过1万句废话,呵呵;-)

090442j3u3otjppoejotey.png

击穿图解:由于redis是单线程的,即使高并发请求过来,那也得一个个处理,总有个先进来的请求。请求过程分为->1,get key ,发现key不存在;2,分布式锁setnx,对该key加锁;3-1,然后去查db,查到数据,set k v; 3-2, 于此同时其他请求到达后,同样是否可以setnx成功? false时,sleep xs, sleep结束后再get key;
上述看似完美,其实有个问题:如果第一个人在3-1阶段挂了呢?这样就进入无限循环了。
怎么解决呢?答: 给setnx 设置锁的过期时间。
上述又看似问题解决,其实又有别的问题来了,第一个人没挂,但是锁超时了。那么后面的请求跟第一个人一样了,就乱了。
怎么解决呢? 答:上多线程,一个去查db,一个监控是否设置值,没有则延长锁过期时间。
穿透

通俗的说穿透:从业务接收查询的,是系统根本不存在的数据,即redis中没有,db中也没有,这样请求就直接打到db
还是先上图;-)

090444jeed77kpr7oxsoff.png

穿透图解: 加上布隆过滤器。前面的章节已经介绍过布隆过滤器;-)
雪崩

通俗的说穿透:大量的key同事失效,间接造成大量的访问打到db
依然是先上图;-)

090445u9fzn78k8egj7fqp.png

雪崩图解: 分两种场景来解决雪崩,时点无关的数据,采用随机设置过期时间;时点有关的数据,强依赖击穿解决方案(也可业务层加判断做延时)
补充->>时点有效数据是啥意思? 答:0点前一种优惠力度,0点后另一种优惠力度
————————————————————


来源:https://www.jianshu.com/p/31ab9b020cd9
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫影基地

GMT+8, 2025-1-12 12:29 , Processed in 0.085757 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表