关于采用永远不过期方案对底层数据源压力的问题
来源:11-8 热点key的重建优化

慕斯基扣德耶维奇
2022-02-02
如果请求到达缓存层之后没有找到对应Key的值,这时需要到存储层/数据源去获取值并进行缓存层的回写。由于“永远不过期”方案是没有锁的,这种情况下是不是像之前讲的那样出现缓存雪崩的问题。
写回答
1回答
-
好帮手慕小蓝
2025-02-10
是的,即使采用“永远不过期”方案,仍然可能出现缓存雪崩问题。以下是原因及解决方案:
原因
缓存失效:虽然缓存“永远不过期”,但在某些情况下(如缓存被清除或重启),缓存会失效。
高并发请求:当缓存失效时,大量请求会同时访问存储层,导致存储层压力骤增,可能引发雪崩。
解决方案
互斥锁:在缓存未命中时,使用互斥锁确保只有一个请求访问存储层,其他请求等待结果。
缓存预热:系统启动时预先加载热点数据,减少缓存失效的风险。
多级缓存:使用多级缓存(如本地缓存+分布式缓存)分散压力。
限流降级:在缓存失效时,通过限流和降级机制保护存储层,避免过载。
总结
即使采用“永远不过期”方案,缓存雪崩仍可能发生。通过互斥锁、缓存预热、多级缓存和限流降级等措施,可以有效降低风险。
00
相似问题