我们可以简单的理解为:由于原有缓存失效,新缓存未到期间 (例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃。 解决办法: 大多数系统设计者考虑用加锁( 最多的解决方案)或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。还有一个简单方案就时讲缓存失效时间分散开。
相关文章
- 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级的理解-一:缓存雪崩
- redis缓存(穿透, 雪崩, 击穿, 数据不一致, 数据并发竞争 ), 分布式锁(watch乐观锁, setnx, redission)
- 《吊打面试官》系列-缓存雪崩、击穿、穿透
- redis缓存雪崩,缓存穿透,缓存击穿的解决方法
- 缓存穿透,缓存雪崩,热点key及解决办法
- js进阶解决浏览器缓存不能自动更新的问题(在ajax的url上带上一个参数,可以是日期,或者是随机数)(随机数Math.random)(取得日期的毫秒数:new Date().getTime();)
- redis与mysql性能对比、redis缓存穿透、缓存雪崩
- 预防Redis缓存穿透、缓存雪崩解决方案
- Redis缓存穿透和缓存雪崩以及解决方案
- 【Redis-缓存工具类:缓存穿透,缓存击穿,缓存雪崩】