Redis缓存失效、穿透和雪崩问题怎么处理?

缓存失效

问题描述:

大量Key同时过期,cache访问miss,穿透到DB,DB压力大增,慢查率增大

业务场景:

1、同一批次的火车票,发布时,一次性加载到缓存,后续会同时缓存失效

2、后台系统计算出热门微博,批量加载到缓存

3、缓存预热,一次性加载最新N小时的数据


解决方案:

过期时间策略:base + random

缓存穿透

问题描述:

查询一个不存在的key,每次访问都穿刺到DB,对DB造成压力

业务场景:

1、通过不存在的UID,访问不存在的用户

2、通过不存在的车次ID,访问不存在的车票信息


解决方案:

方案1:不存在的key,在cache中缓存一个默认值。(不存在的key在额外缓存,先查正常缓存,没有则查额外非法缓存,没有在穿透DB并缓存,存在非法缓存中则返回,非法缓存需定期过期)

方案2:构建BloomFilter过滤器,过滤非法key访问。

缓存雪崩

问题描述:

部分缓存节点不可用,导致整个缓存体系、服务系统不可用的情况。

情况1:缓存不rehash,雪崩跟较多缓存节点不可用相关,大量请求穿透,DB过载不可用,进而导致整个服务异常。

情况2:缓存支持rehash,雪崩跟流量洪峰有关,部分缓存节点过载crash,过载扩散,引发整个缓存异常不可用。

业务场景:

1、突发洪水流量,部分cache过载,进而整个cache池过载异常

2、计架断电,cache节点宕机,大量请求打到DB,服务异常


解决方案:

方案1:增加DB读写开关,慢查询超过阈值,关闭开关,failfast

方案2:多副本cache架构,任何cache池miss后,读其它cache副本

方案3:实时监控,及时发现并恢复,增加自动故障转移策略

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值