Redis高并发场景(九)—缓存雪崩

缓存雪崩是指同一时间大量缓存key失效,引发系统崩溃。其主要由Redis宕机或热点key统一过期引起。解决方案包括设置随机过期时间、分布式缓存、热点数据永不过期、监控预更新、使用锁/队列、构建多级缓存及实施熔断机制来减轻数据库压力。
摘要由CSDN通过智能技术生成

概述

造成缓存雪崩的关键在于在同一时间大规模的key失效。
与缓存击穿不同的是缓存雪崩针对的是多个热点key,而缓存击穿是一个热点key

产生原因

第一种可能是Redis宕机,
第二种多个热点key可能是采用了相同的过期时间。

解决方案

1.过期时间设置随机值
在原有的失效时间上加上一个随机值,比如,1-5分钟随机。这样就避免了同一时间大量数据过期现象的发生而导致缓存雪崩。

2.分布式部署且均匀分布热点数据
如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。同时,分布式集群可以防止Redis宕机导致缓存雪崩的问题。

3.热点数据永不过期
设置热点数据永远不过期。
4.监控缓存过期,提前更新
监控缓存,发下缓存快过期了,提前对缓存进行更新。
5.使用锁或队列
用加锁或者队列的方式来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发
请求落到底层存储系统上,不适用高并发情况。

6.构建多级缓存
nginx缓存+redis缓存+其他缓存(ehcache等)

缓存雪崩的兜底措施:
1.使用熔断机制。当流量到达一定的阈值时,就直接返回“系统拥挤”之类的提示,防止过多的请求打在数据库上。至少能保证一部分用户是可以正常使用,其他用户多刷新几次也能得到结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值