关于采用永远不过期方案对底层数据源压力的问题

来源:11-8 热点key的重建优化

慕斯基扣德耶维奇

2022-02-02

如果请求到达缓存层之后没有找到对应Key的值,这时需要到存储层/数据源去获取值并进行缓存层的回写。由于“永远不过期”方案是没有锁的,这种情况下是不是像之前讲的那样出现缓存雪崩的问题。

写回答

1回答

好帮手慕小蓝

2025-02-10

是的,即使采用“永远不过期”方案,仍然可能出现缓存雪崩问题。以下是原因及解决方案:

原因

缓存失效:虽然缓存“永远不过期”,但在某些情况下(如缓存被清除或重启),缓存会失效。

高并发请求:当缓存失效时,大量请求会同时访问存储层,导致存储层压力骤增,可能引发雪崩。

解决方案

互斥锁:在缓存未命中时,使用互斥锁确保只有一个请求访问存储层,其他请求等待结果。

缓存预热:系统启动时预先加载热点数据,减少缓存失效的风险。

多级缓存:使用多级缓存(如本地缓存+分布式缓存)分散压力。

限流降级:在缓存失效时,通过限流和降级机制保护存储层,避免过载。

总结

即使采用“永远不过期”方案,缓存雪崩仍可能发生。通过互斥锁、缓存预热、多级缓存和限流降级等措施,可以有效降低风险。


0
0

一站式学习Redis 从入门到高可用分布式实践

Redis课程升级!系统梳理Redis知识体系,掌握redis必备!

2277 学习 · 261 问题

查看课程