在高并发系统中,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)+ 系统降级 + 限流保护 + 本地缓存兜底 来解决。
在高并发场景下,还需要通过熔断机制和缓存策略防止系统雪崩,从而保证整体系统稳定运行。



