面试必备:简单聊聊缓存雪崩及解决方案?

llovebo

共 726字,需浏览 2分钟

 · 2021-07-23

简述:

     如果缓存在一段时间内同时失效,例如我们在设置缓存时,采用了相同的过期时间,导致在某一时刻所有缓存同时失效,请求全部到数据库上,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。


解决方案:

      缓存雪崩对底层系统的冲击非常可怕,造成的损失巨大。遗憾的是目前并没有比较完美的解决方案。

 1.“加锁”或者“队列”方式,“加锁”或者“队列”方式保证缓存的单线程(进程)写,从而避免大量并发请求落到底层存储系统上。比如某个Key只允许一个线程查询和写缓存,其他线程等待。

 2.设置分散缓存失效时间,这个是个比较简单处理方案,就是将缓存失效时间分散开,比如我们在原有失效时间上增加一个随机值,如1~6分钟随机,尽量让缓存不要同时失效,从而尽量避免缓存雪崩。

3. 单独处理热门数据, 对于一些热门数据的持续读取,这种缓存数据也可以采取定时更新的方式来刷新缓存,避免自动失效。

4从服务器和接口处解决。如果服务和接口都有限流机制,就算缓存全部失效了,但是请求的总量是有限制的,可以在承受范围之内,这样短时间内系统响应慢点,但不至于挂掉,影响整个系统。


版权申明:本文来源于网友收集或网友提供,仅供学习交流之用,如果有侵权,请转告版主或者留言,本公众号立即删除。


支持小微:

腾讯云 搞活动了?玩服务器的可以搞搞。就这几天时间。

轻量  1C2G6M 60GB SSD盘297元/3年

链接:https://curl.qcloud.com/bR8ycXZa



右下角,您点一下在看图片d57e4a23582bced38c3b584d32f848bd.webp

小微工资涨1毛

商务合作QQ:185601686



浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报