Redis的缓存雪崩

参考:

RssRead/【Redis】Redis面试题详解与使用案例(金三银四面试专栏启动)
43-Redis 缓存击穿(失效)、缓存穿透、缓存雪崩怎么解决?-51CTO_COM@annote#^sran-1678436358693

造成缓存雪崩的原因

大量的数据同时过期导致本来应该请求缓存对的数据打到了数据库上导致数据库宕机

解决方案:

  1. 给缓存设置随机过期时间,过期时间=base 过期时间 + 随机过期时间 (随机过期时间应该在一个小时间范围内,如 1~5 分钟,这样既保证了在相近时间过期,也能防止热点数据大面积过期)
  2. 添加 互斥锁,构建缓存后释放锁,如果缓存中不存在该数据则返回空值或者默认值
  3. 采用双 key 策略,主 key 是原始缓存,备 key 是副本缓存。当主 key 访问失败时访问备 key
  4. 使用定时任务或者消息队列类更新或者删除 Redis 里的缓存
  5. 接口限流

Redis 故障,无法处理请求

解决方案:

  1. 服务熔断或者请求限流
  2. 使用主从节点来构建集群 Redis集群