Redis 集群模式与哨兵模式在高可用上的核心区别在于数据分布架构与扩展能力。哨兵模式基于主从复制,通过哨兵进程监控主节点状态实现自动故障转移,但所有节点存储全量数据,无法实现水平扩展,写性能受限于单主节点。而集群模式(Cluster)引入了数据分片(Sharding)机制,将数据分散存储在多个节点上,每个节点均可处理读写请求,不仅实现了高可用自动切换,还支持在线扩缩容,突破了单机内存与性能瓶颈,适合大规模分布式场景。
Redis 高可用-Cluster
在 redis cluster 中,如何进行数据分片?redis 有三种高可用方案:主从,哨兵 (sentinel), 集群 (cluster).哨兵和集群模式都是基于 redis 主从来实现的,普通的 redis 主从无法实现自动的高可用切换。哨兵模式是在 redis 主从节点外围部署哨兵集群,哨兵集群是一类特殊的 redis, 是基于 quorum 协议的监控集群,至少需要三个节点,哨兵集群会对 redis 主从节点状态进行监控,如果设定值个数 (一般使用多数派) 的哨兵监控到主节点的失败,会协商进行主从切换。一套哨兵集群可以监控多套 redis 主从,具体配置步骤不再赘述。集群模式也称为 redis cluster,redis cluster 是一个多节点分布式缓存,架构与 分布式数据库 有些类似,redis key 的 crc16 值被 hash 到 16384 个 slot 中,所以每个节点存储一部分 redis 数据,所有节点组成完整的 redis 集群。客户端可以对每个 redis 节点进行读写,但是同一时刻只能操作一个 key. redis 集群的优势在于可以快速的实现扩缩容,可以在线的新增和删除节点。另外不同于 sentinel 模式,redis cluster 中所有 服务器 都可以看做主节点,都可以进行读写,所有服务器的资源得到了利用。在高可用方案,每个 redis 主节点在另外的服务器上都会有一到多个备份的副本,并且基于多数派实现了主节点失败时的自动切换,可以容纳集群少数节点同时失败。下面以两台机器为例简单看下 redis cluster 的搭建步骤(2024 年 7 月 9 日)
高可用架构速览——主从、哨兵与 Cluster 的角色分工与故障转移路径
1.1 高可用的核心内涵 在分布式系统语境中,高可用性衡量的是服务提供正常功能的时间比例,通常用多个"9"来表示。例如 99.99% 的可用性意味着一年内服务不可用时间不超过 52.56 分钟。然而在 Redis 的场景下,高可用的内涵更加丰富:不仅要求服务持续可用,还需要保障数据安全性、可扩展性和故障自愈能力。Redis 通过三种递进的架构方案实现不同级别的高可用:主从复制提供数据冗余和读写分离,哨兵模式实现自动故障转移,Cluster 集群则提供真正的水平扩展能力。这三种架构并非互斥,而是随着业务增长不断演进的技术路线。从单机 Redis 到分布式集群的演进,源于业务规模扩大带来的三大挑战:数据安全性要求通过冗余备份防止单点数据丢失,服务连续性需要故障时快速自动恢复,性能可扩展性要求突破单机资源瓶颈。这种演进路径体现了一种架构哲学:简单性与能力之间的权衡。主从复制架构简单但能力有限,Cluster 集群能力强大但复杂度高,而哨兵模式则居于两者之间。主从复制是 Redis 中最基础的高可用方案,其核心是一主多从的架构模式。主节点负责处理写操作,从节点异步复制主节点数据,实现数据的热备份。数据同步过程包含全量同步和增量同步两个阶段。当从节点首次连接主节点或长时间断开后重连时,会触发全量同步:主节点执行 BGSAVE 生成 RDB 快照文件并传输给从节点,同时缓存同步期间的写命令。主从架构的主要局限性在于:写操作无法负载均衡,所有写请求都必须发送到单一主节点;存储容量受单机内存限制;缺乏自动故障转移机制。(发布时间是 2025 年 12 月 12 日)
Redis 4 种集群方案介绍 + 优缺点对比
在服务开发中,单机都会存在单点故障的问题,即服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台服务器可用服务就可用。redis 也是一样,为了解决单机故障引入了主从模式,但主从模式存在一个问题:master 节点故障后服务,需要人为的手动将 slave 节点切换成为 maser 节点后服务才恢复。redis 为解决这一问题又引入了哨兵模式,哨兵模式能在 master 节点故障后能自动将 salve 节点提升成 master 节点,不需要人工干预操作就能恢复服务可用。但是主从模式、哨兵模式都没有达到真正的数据 sharding 存储,每个 redis 实例中存储的都是全量数据,所以 redis cluster 就诞生了,实现了真正的数据分片存储。但是由于 redis cluster 发布得比较晚 (2015 年才发布正式版 ), 各大厂等不及了,陆陆续续开发了自己的 redis 数据分片集群模式,比如:Twemproxy、Codis 等。主从模式 redis 单节点虽然有通过 RDB 和 AOF 持久化机制能将数据持久化到硬盘上,但数据是存储在一台服务器上的,如果服务器出现硬盘故障等问题,会导致数据不可用,而且读写无法分离,读写都在同一台服务器上,请求量大时会出现 I/O 瓶颈。为了避免单点故障 和 读写不分离,Redis 提供了复制 (replication) 功能实现 master 数据库中的数据更新后,会自动将更新的数据同步到其他 slave 数据库上。如上 redis 主从结构特点:一个 master 可以有多个 salve 节点;salve 节点可以有 slave 节点,从节点是级联结构。主从模式优缺点 优点:主从结构具有读写分离,提高效率、数据备份,提供多个副本等优点。不足:最大的不足就是主从模式不具备自动容错和恢复功能,主节点故障,集群则无法进行工作,可用性比较低,从节点升主节点需要人工手动干预。普通的主从模式,当主数据库崩溃时,需要手动切换从数据库成为主数据库:在从数据库中使用 SLAVE NO ONE 命令将从数据库提升成主数据继续服务。启动之前崩溃的主数据库,然后使用 SLAVEOF 命令将其设置成新的主数据库的从数据库,即可同步数据。哨兵模式 第一种主从同步/复制的模式,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用,这时候就需要哨兵模式登场了。哨兵模式是从 Redis 的 2.6 版本开始提供的,但是当时这个版本的模式是不稳定的,直到 Redis 的 2.8 版本以后,这个哨兵模式才稳定下来。(该信息的时间戳是 2023 年 2 月 23 日)
FAQ
问:哨兵模式如何实现高可用?
答:哨兵模式通过部署哨兵集群监控主从节点状态,当多数派哨兵检测到主节点失败时,会自动协商将从节点提升为主节点,实现故障转移。
问:Redis Cluster 如何分片?
答:Redis Cluster 将 key 的 crc16 值 hash 到 16384 个 slot 中,每个节点存储一部分数据,所有节点组成完整集群。
问:主从模式的最大不足是什么?
答:主从模式不具备自动容错和恢复功能,主节点故障需要人工手动干预将从节点提升为主节点,可用性较低。