关于Redis的缓存雪崩、缓存击穿、缓存穿透

对于发生的故障是缓存雪崩、击穿、穿透,是由发生时的类型决定的,对于不同的类型虽说有不同的解决方案,但是设计一套灵活且周密的架构才是核心。

 

缓存穿透

在缓存中未命中,在数据库中也未命中;由于大量请求在缓存中未命中导致数据库层压力巨大出现故障

应对策略

  1. 缓存null对象
  2. 增加白名单
  3. 拦截非法请求

缓存击穿

大量热点频繁Key过期,导致数据库压力在某一时刻增大出现故障

应对策略

  1. 热点key不设置过期时间,由后台动态处理
  2. 增加互斥锁机制,只能有一个请求进行处理一个Key的的缓存

 

缓存雪崩

大量key都过期,或者缓存宕机,导致请求都走到数据库

应对策略

  1. 均匀设置过期时间,避免一起过期造成的雪崩
  2. 增加互斥锁机制
  3. 双Key策略,主Key失效了,使用从Key,当数据更新时,主Key和从Key都进行更新
  对于宕机:
  1. 服务熔断
  2. 请求限流
  3. 集群redis,哨兵,集群等

 

不难看出上面其实就是发生时刻的类型决定的结果,其实我们在设计系统时刻,根据不同的业务,规模,环境等情况,使用不同的架构才能保证系统的安全,高可用。

posted @ 2022-07-22 14:40  swayer  阅读(43)  评论(0编辑  收藏  举报