Redis 什么是缓存雪崩,如何解决【详解】

今天给大家带来Redis 什么是缓存雪崩,如何解决【详解】,希望能够帮助到大家。

由于原有缓存失效,新缓存未到期间
(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机。从而形成一系列连锁反应,造成整个系统崩溃

解决办法:

1、使用锁或队列

一般并发量不是特别多的时候,使用最多的解决方案是加锁排队,加锁排队只是为了减轻数据库的压力,并没有提高系统吞吐量。假设在高并发下,缓存重建期间key是锁着。在真正的高并发场景下很少使用。

2、添加缓存标记

给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。

缓存标记:记录缓存数据是否过期,如果过期会触发通知另外的线程在后台去更新实际key的缓存;

缓存数据:它的过期时间比缓存标记的时间延长1倍,例:标记缓存时间30分钟,数据缓存设置为60分钟。 这样,当缓存标记key过期后,实际缓存还能把旧数据返回给调用端,直到另外的线程在后台更新完成后,才会返回新缓存。

3、为key设置不同的缓存失效时间

还有一个简单方案就是在缓存的时候给过期时间加上一个随机值,将缓存失效时间分散开。

4、双缓存

缓存A和缓存B

人已赞赏
数据库

Redis的同步机制是什么【面试题详解】

2020-11-5 14:24:37

数据库

Redis 什么是缓存穿透 如何解决【面试题详解】

2020-11-5 14:33:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();