【笔记】redis的穿透,击穿,雪崩场景及解决策略

一.缓存穿透

场景:外界访问数据库没有的操作,大量访问导致数据库宕机

解决的方案:

1.访问数据库后返回空值并将空值保存在缓存层,下次访问直接从缓存返回空值。

2.在缓存层外再加一个过滤器,redis自带的一个叫布隆过滤器,过滤数据库没有的key。

二.缓存击穿

场景:一份热点数据在缓存失效的瞬间,直接访问数据库,大量数据导致服务器崩溃

解决方案:

1.加互斥锁:一个线程访问时,其他线程必须等待,等该线程结束后,缓存会重建,其他线程继续访问。

2.设置永不过期:设置永不过期过或者逻辑上设置过期时间,该逻辑过期后,该线程立马重建缓存。

三.缓存雪崩

场景:因某些原因,redis不提供服务,所有请求直接访问持久层,导致持久层宕机

1.避免同时过期

设置过期时间时加一个随机数,保证他们不会同时过期

2.设置高可用的redis缓存

设置多个节点,一个宕机,其他的还能服务

3.设置多级缓存

增加本地缓存,在redis前面加一级缓存

4.设置限流和降级策略

对持久层进行限流操作,减少请求访问,对于未访问到的请求,返回一个默认值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值