缓存雪崩的五大解决方案
1,什么是缓存雪崩如果缓存集中在一段时间内失效,引发大量缓存穿透,所有的查询都落在数据库上,造成缓存雪崩,由于原有缓存失效,新缓存未到期间所有原本访问缓存的都去访问了数据库,而对数据库cpu和内存造成巨大压力,从而引发宕机。2,如何预防和解决2.1 加锁排队mutex互斥锁解决,Redis的setnx去set一个mutex key,当操作返回成功时,再进行load db并回设到缓存,否则就重试整个
·
1,定义
如果缓存集中在一段时间内失效,引发大量缓存穿透,所有的查询都落在数据库上,造成缓存雪崩,由于原有缓存失效,新缓存未到期间所有原本访问缓存的都去访问了数据库,而对数据库cpu和内存造成巨大压力,从而引发宕机。
2,如何预防和解决
2.1 加锁排队
mutex互斥锁解决,Redis的setnx去set一个mutex key,当操作返回成功时,再进行load db并回设到缓存,否则就重试整个get缓存的方法。
2.2 数据预热
数据预热就是系统上线后,将相关的缓存数据直接加载到缓存系统,这样就可以避免在用户请求的时候先查询数据库。
2.3 双层缓存策略
C1为原始缓存,C2为拷贝缓存,C1失效时可以访问C2,C1缓存失效时间设置为短期,C2缓存失效时间设置为长期。
2.4 定时更新缓存策略
失效性要求不高的缓存,容器启动初始化加载,采用定时任务更新或移除缓存。
2.5 缓存失效时间分布均匀
设置不同的过期时间,让缓存失效的时间尽量分布均匀。
更多推荐
所有评论(0)