在高并发系统中,Redis通常承担:

  • 缓存
  • 分布式锁
  • 秒杀库存
  • 会话管理

如果 Redis 挂掉,可能导致:

  • 缓存失效
  • 请求直接打到数据库
  • 系统雪崩

因此必须设计 Redis高可用架构 + 降级方案


一、Redis高可用架构

首先要避免 Redis 单点故障。

常见方案:

1 Redis主从架构

结构:
Redis Master

Redis Slave

特点:

  • 主节点负责写
  • 从节点负责读
  • 主节点故障可以切换

2 Redis Sentinel(哨兵模式)

结构:

Redis Master

Redis Slave

Sentinel 集群

功能:

  • 监控 Redis
  • 自动故障转移
  • 自动选举新的 Master

优点:

  • 自动恢复
  • 高可用

3 Redis Cluster(生产推荐)

结构:

Redis Cluster
├─ Node1
├─ Node2
├─ Node3
├─ Node4

特点:

  • 数据分片
  • 自动故障转移
  • 支持大规模数据

适用于:

  • 高并发系统
  • 秒杀系统
  • 大型互联网平台

二、Redis挂掉后的系统保护

即使 Redis 挂了,也必须保证系统不会崩溃。

1 服务降级

如果 Redis 不可用:

关闭秒杀
关闭高并发接口
只保留核心功能

例如:

返回:系统繁忙,请稍后再试


2 限流保护

防止数据库被打爆。

使用:

  • Nginx 限流
  • Sentinel 限流

例如:

QPS限制 1000


3 本地缓存兜底

可以使用:

  • Caffeine
  • Guava Cache

结构:

本地缓存

Redis

数据库

当 Redis 挂掉:

直接读取本地缓存


4 熔断机制

如果 Redis 连续请求失败:

熔断 Redis 调用

例如:

10秒内不再请求 Redis

防止线程阻塞。


三、秒杀系统 Redis 挂掉解决方案

秒杀系统中 Redis 通常用于 库存判断

如果 Redis 挂掉:

方案1:暂停秒杀

最安全方案:

秒杀接口直接关闭

避免库存错误。


方案2:降级库存逻辑

临时改为:

数据库库存判断

但必须加:

强限流

否则数据库会被打爆。


四、Redis雪崩保护

Redis恢复后可能出现:
缓存全部失效
数据库压力暴增

解决方案:

1 缓存过期时间随机化

例如:
baseTTL + random(0~300)


2 热点数据永不过期

热点Key:
永不过期
后台更新


3 多级缓存

结构:

本地缓存

Redis

数据库

减少数据库压力。


五、面试高分回答总结
Redis挂了怎么办?
标准回答可以总结为:

Redis挂掉主要通过 Redis高可用架构(Cluster / Sentinel)+ 系统降级 + 限流保护 + 本地缓存兜底 来解决。
在高并发场景下,还需要通过熔断机制和缓存策略防止系统雪崩,从而保证整体系统稳定运行。