菜鸟笔记
提升您的技术认知

Redis 集群方案

集群方案

Redis 提供了多种集群方式以满足不同的业务需求,主要包括 主从复制(Master-Slave Replication)哨兵模式(Sentinel)和 集群模式(Cluster)。以下是各模式的详细对比和说明:

1、主从复制(Master-Slave Replication)
1. 架构特点
  • 单主多从:一个主节点(Master)负责写入,多个从节点(Slave)复制主节点数据,从节点支持读操作。
  • 数据同步:主节点通过 RDB 快照和增量日志(AOF 重写)向从节点同步数据。
  • 读写分离:读请求由从节点处理,写请求集中在主节点,提升读性能。
2. 核心功能
  • 数据备份:从节点作为主节点的副本,用于容灾备份。
  • 扩展读能力:通过增加从节点数量分担读压力。
  • 手动故障转移:主节点故障时需手动将从节点提升为新主节点。
3. 优缺点
优点 缺点
– 配置简单,易于实现 – 主节点单点故障,需手动切换
– 支持读写分离 – 无法自动恢复,存在服务中断风险
– 适合读多写少场景 – 从节点数据可能存在延迟(异步复制)
4. 适用场景
  • 简单数据备份和读写分离场景(如缓存层读扩展)。
  • 对高可用性要求不高的业务(如非核心系统)。
2、哨兵模式(Sentinel)
1. 架构特点
  • 主从 + 哨兵节点:在主从复制基础上,引入独立的哨兵节点(Sentinel)组成集群。
  • 自动监控:哨兵节点定期监控主从节点状态,检测主节点故障。
  • 自动故障转移:主节点故障时,哨兵自动选举从节点为新主节点,并重新配置其他从节点。
2. 核心流程
  1. 监控:哨兵节点通过 PING 命令检查主从节点存活状态。
  2. 选举:当主节点被多数哨兵认定为下线(ODOWN),触发选举机制,选择最优从节点(如复制偏移量最大、优先级最高)。
  3. 故障转移:将选中的从节点提升为新主节点,其他从节点指向新主节点,通知客户端更新连接。
3. 优缺点
优点 缺点
– 自动故障转移,高可用 – 不支持数据分片,单机存储限制
– 多哨兵节点避免单点故障 – 主节点写压力大,无法横向扩展数据量
– 兼容主从复制的读写分离 – 故障转移期间存在短暂服务不可用
4. 适用场景
  • 对高可用性要求较高的场景(如生产环境缓存)。
  • 数据量较小、写请求不密集的业务(如中小型应用)。
3、集群模式(Cluster)
1. 架构特点(Redis Cluster)
  • 分布式架构:节点分为 主节点(Master) 和 从节点(Slave),主节点负责数据读写,从节点作为备份。
  • 数据分片(Sharding):通过 哈希槽(Hash Slot) 机制将数据分散到不同主节点。Redis 集群共有 16384 个哈希槽,每个主节点负责部分槽位。
  • 节点间通信:节点通过 Gossip 协议 交换集群状态,自动发现和维护节点关系。
2. 核心机制
  • 哈希槽分配
    数据键通过 CRC16(key) % 16384 计算槽位,映射到对应主节点。例如:
    槽位 0-5460 → 节点 A
    槽位 5461-10922 → 节点 B
    槽位 10923-16383 → 节点 C
    
  • 自动故障转移:与哨兵模式类似,主节点故障时,从节点自动提升为新主节点,并重新分配槽位。
  • 横向扩展:可通过添加节点组(主从对)动态调整槽位分布,无需停机。
3. 优缺点
优点 缺点
– 支持数据分片,突破单机存储限制 – 配置和管理复杂(需手动分配槽位)
– 高可用性(主从 + 自动故障转移) – 客户端需支持集群模式(如 Redis-Py Cluster)
– 读写性能可线性扩展 – 跨节点操作需通过路由,存在延迟
– 适合大数据量和高并发场景 – 不支持多键事务(仅支持单槽操作)
4. 适用场景
  • 数据量较大(GB 级以上)或访问流量高的场景(如大型电商、社交平台)。
  • 需要水平扩展读写能力的业务(如实时统计、分布式缓存)。
4、三种模式对比表格
维度 主从复制 哨兵模式 集群模式
高可用性 手动切换,低 自动故障转移,高 自动故障转移,高
数据分片 不支持 不支持 支持(16384 哈希槽)
读写扩展 读可扩展(从节点) 读可扩展(从节点) 读写均可扩展(节点)
单机瓶颈 主节点存在 主节点存在 无(数据分散存储)
部署复杂度 简单 中等(需配置哨兵) 复杂(槽位管理)
典型场景 备份、读写分离 高可用中小规模数据 大规模数据 / 高并发
Redis 版本 2.0+ 2.8+ 3.0+
5、选择建议
  1. 小规模场景
    • 若仅需备份和读写分离,选 主从复制
    • 若需自动故障转移,选 哨兵模式
  2. 大规模场景
    • 数据量超过单机限制或需高并发,选 集群模式
  3. 特殊需求
    • 需多数据中心容灾,可结合 主从复制 + 异步复制
    • 需强一致性,谨慎使用(Redis 基于异步复制,存在短暂数据丢失可能)。