缓存雪崩,缓存击穿,缓存穿透

缓存雪崩

多个key同时失效,导致多个请求直接打到数据库导致数据库宕机

原因:

  • 缓存中间件服务不可用,缓存失效导致所有请求打到数据库

  • 缓存中大量key同时过期

如何避免:

  • 尽可能保证缓存中间件的高可用,比如redis缓存,那么就采用redis的cluster集群,已提前做好缓存组件报警机制,杜绝宕机

  • 1.在失效时间上增加一道五分钟的随机值 ,对热数据进行访问的时候自动续期

缓存击穿

单个key失效,导致请求同一条数据的并发请求同时打到数据库,导致数据库宕机

如何避免:

  • 设置热点数据永不过期

  • 做好限流、熔断、降级防止系统崩溃

  • 加锁

缓存穿透

缓存和数据库中数据都不存在,导致大量请求打到数据库

原因:

  • 业务设计不合理

  • 业务/运维/开发失误的操作,比如缓存和数据库的数据都被误删除了

  • 黑客非法请求攻击,比如黑客故意捏造大量非法请求,以读取不存在的业务数据

如何避免:

  • api入口进行参数校验,过滤非法值

  • 将空数据到缓存中,设置key-null,同时设置短的缓存时间(如30秒),这样可以放防止用户反复用一个id暴力攻击

  • 采用布隆过滤器通过多次哈希将可能存在的数据映射到一个大数组,并将相应位置设为1。当检查请求数据经过相同的哈希计算后在数组中的位置时,如果位置为0,则数据一定不存在;如果为1,则数据可能存在,但有一定的误判可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值