Redis集群主从状态怎么判断?分布式存储架构是什么样的?

文章导读
判断 Redis 集群主从状态通常使用 cluster nodes 命令查看节点角色(master/slave)及连接状态,或通过 info replication 查看主从复制详情。分布式存储架构方面,Redis 集群采用分片(Sharding)机制,将数据划分为 16384 个哈希槽(Hash Slot),每个主节点负责一部分槽,从节点作为备份。这种架构支持横向扩展,通过多主节点分担读写压力,
📋 目录
  1. 标题:Redis 集群主从状态怎么判断?分布式存储架构是什么样的?
  2. Redis 系列:Redis 主从、哨兵、集群介绍
  3. Redis 三大高可用模式:主从、哨兵、集群
  4. Redis 集群模式与主从模式有什么不同之处?
  5. Redis 主从、哨兵、Cluster 集群一锅端!
  6. FAQ
A A

标题:Redis 集群主从状态怎么判断?分布式存储架构是什么样的?

判断 Redis 集群主从状态通常使用 cluster nodes 命令查看节点角色(master/slave)及连接状态,或通过 info replication 查看主从复制详情。分布式存储架构方面,Redis 集群采用分片(Sharding)机制,将数据划分为 16384 个哈希槽(Hash Slot),每个主节点负责一部分槽,从节点作为备份。这种架构支持横向扩展,通过多主节点分担读写压力,并结合哨兵或集群自带故障转移机制实现高可用,确保单点故障不影响整体服务,同时通过异步复制保持数据最终一致性。

Redis 系列:Redis 主从、哨兵、集群介绍

一、Redis 主从架构 1、Redis 主从架构 主从复制模式就是,部署多台 Redis 节点,其中只有一台节点是主节点 (Master),其他的节点都是从节点 (Slave),也叫备份节点 (Replica)。只有 Master 节点提供数据的事务性操作 (增删改),Slave 节点只提供读操作。所有 Slave 节点的数据都是从 Master 节点同步过来的 Redis 主从架构样式图:该图只是最简单的一种主从结构方式,所有的 Slave 节点都挂在 Master 节点上 优点:Slave 节点与 Master 节点的数据延迟较小; 缺点:如果 Slave 节点数量很多,Master 同步一次数据的耗时就很长。还有一种主从结构就是 Master 下面只挂一个 Slave 节点,其他的 Slave 节点挂在这个 Slave 节点下面,这样,Master 节点每次只需要把数据同步给它下面的那一个 Slave 节点即可,后续 Slave 节点的数据同步由这个 Slave 节点完成。优点:降低了 Master 节点做数据同步的压力 缺点:导致 Slave 节点与 Master 节点数据不一致的延迟更高。2、主从架构原理 主从模式的核心就是 Master 节点与 Slave 节点之间的数据同步。需要注意的是,Redis 和大部分中间件的主从模式中的数据同步都是由 Slave 节点主动发起的,原因是主从模式中只有一个 Master 节点,剩余的全是 Slave 节点,如果由 Master 节点主动推送数据到各个 Slave 节点 首先,维护成本太大,Master 节点上要维护所有 Slave 的地址信息,而且在增加 Slave 节点的时候,也要同步维护到 Master 上,这样 Master 才能将数据同步到所有的 Slave 上面;其次,Master 性能受影响,节点之间同步数据肯定要通过网络传输数据,由 Master 节点建立所有 Slave 节点的连接会对 Master 的性能产生较大影响。而由 Slave 发起数据同步则避免了上述问题,只需在每个 Slave 中维护一个 Master 的地址即可。(撰于 2026 年 4 月 13 日)

Redis 三大高可用模式:主从、哨兵、集群

Redis,作为一种开源的、基于内存的数据结构存储系统,被广泛应用于各种场景,包括缓存、消息队列、短期存储等。单一实例的工作模式通常无法保证 Redis 的可用性和拓展性,Redis 提供了三种分布式方案:主从模式 哨兵模式 集群模式 1. 主从模式的定义 Redis 的主从模式是一种数据备份和读写分离的模式。在这种模式下,有一个主节点 (Master) 和一个或多个从节点 (Slave)。所有的写操作都在主节点上进行,而读操作可以在主节点和从节点上进行。从节点会复制主节点的数据,实现数据的备份。2. 主从模式的工作原理 在主从模式下,主节点负责处理所有的写操作,并将写操作记录在内存中的缓冲区。从节点从主节点获取这些写操作记录,并在自己的数据库上执行这些操作,从而保持与主节点的数据一致。此外,读请求可以在主节点和从节点上进行,从而实现读写分离,提高系统的读取性能。具体的同步步骤如下:从服务器连接到主服务器:首先,从服务器需要连接到主服务器。这通常通过在从服务器上执行 SLAVEOF 命令并指定主服务器的 IP 地址和端口号来完成。发送 SYNC 命令:从服务器连接到主服务器后,它会发送一个 SYNC 命令。这个命令是 Redis 复制的核心,它会触发主服务器开始复制过程。主服务器开始保存数据:收到 SYNC 命令后,主服务器会开始在后台保存其数据快照。同时,主服务器还会记录从接收到 SYNC 命令开始执行的所有写命令,这些命令将在数据快照完成后发送给从服务器。主服务器发送数据快照:数据快照完成后,主服务器会将其发送给从服务器。从服务器在接收到数据快照后,会删除所有旧数据,然后使用接收到的数据快照来加载新数据。主服务器发送缓存的写命令:数据快照发送完成后,主服务器会将在数据快照过程中记录的所有写命令发送给从服务器。从服务器在接收到这些命令后,会按照接收的顺序执行这些命令,以确保其数据与主服务器的数据保持一致。主从同步完成,进入命令转发阶段:完成上述步骤后,主从服务器的数据就同步了。之后,主服务器每执行一次写命令,就会将这个命令发送给所有的从服务器。从服务器在接收到写命令后,会执行这个命令,以确保其数据始终与主服务器的数据保持一致。配置主从模式相对简单,只需要在从节点的配置文件中设置主节点的 IP 地址和端口号,然后启动从节点即可。从节点会自动连接到主节点,并开始复制数据。同时,主服务器还会记录从接收到 SYNC 命令开始执行的所有写命令,这些命令将在数据快照完成后发送给从服务器。(来自 2025 年 6 月 5 日的资料)

Redis 集群模式与主从模式有什么不同之处?

在 Redis 中,通常有两种数据分片或高可用方案:主从复制和分布式集群。1、主从复制 Redis 主从复制被广泛应用于 redis 服务器的读写分离和容灾备份场景。主从复制由一个主节点与若干个从节点组成,它们之间通过异步传输数据来保持数据一致。即主节点通过将最新的数据异步地发送给所有从节点,使得所有从节点都拥有主节点相同的数据副本。当主节点出现故障时,可以手动切换为任意从节点作为新的主节点,实现快速的容灾切换。主从复制的优点在于:易于搭建维护,低成本高可用;只需要一个主节点和若干个从节点便能够实现读写分离和容灾备份等性能扩展和数据安全保护功能;同时尽管主节点和从节点数据输出达到高并发,但仍不会影响到主节点的性能表现。然而其不足之处也十分明显:无法支持大规模的数据存储和分布式集群方案,如果希望实现 redis 多数据中心部署则需要额外配合第三方软件如 twemproxy 或 HAProxy 等。2、分布式集群 在 Redis 3.0 版本之后,Redis 提供了分布式集群的支持,从而让 Redis 也可以通过横向扩展来提高性能和增加数据容量。Redis 集群是将整个数据集划分成多个 Shard,每个 Shard 被称为一个 Hash slot。同样的,集群由多个 Master 节点组成,每个 Master 负责一至多个 Shard。而在 Redis 集群中,则采用 RDB 快照备份模式并将副本均衡写入多个节点上,从而满足数据的高可靠性需求。Redis 集群相对于主从复制最大的区别在于:其支持数据自动分片,同时支持 Cluster 内的多 Master 节点协议的读写请求。但集群模式有一定不足之处——需要更多的硬件资源、网络带宽等设施;另外,在不同 Master 阶段变化及故障期间会产生部分业务异常 (虽然 Redis Cluster 会尽可能跨 Boundary 维护 Master-replica 结构并迁移影响 Slot 分片)。(2023 年 9 月 11 日的资料)

Redis集群主从状态怎么判断?分布式存储架构是什么样的?

Redis 主从、哨兵、Cluster 集群一锅端!

面试官经常会问到 Redis 的高可用。Redis 高可用回答包括两个层面,一个就是数据不能丢失,或者说尽量减少丢失;另外一个就是保证 Redis 服务不中断。对于尽量减少数据丢失,可以通过 AOF 和 RDB 保证。对于保证服务不中断的话,Redis 就不能单点部署,这时候我们先看下 Redis 主从。Redis 主从模式,就是部署多台 Redis 服务器,有主库和从库,它们之间通过主从复制,以保证数据副本的一致。主从库之间采用的是读写分离的方式,其中主库负责读操作和写操作,从库则负责读操作。如果 Redis 主库挂了,切换其中的从库成为主库。Redis 主从同步包括三个阶段。第一阶段:主从库间建立连接、协商同步。从库向主库发送 psync 命令,告诉它要进行数据同步。主库收到 psync 命令后,响应 FULLRESYNC 命令 (它表示第一次复制采用的是全量复制),并带上主库 runID 和主库目前的复制进度 offset。第二阶段:主库把数据同步到从库,从库收到数据后,完成本地加载。主库执行 bgsave 命令,生成 RDB 文件,接着将文件发给从库。从库接收到 RDB 文件后,会先清空当前数据库,然后加载 RDB 文件。主库把数据同步到从库的过程中,新来的写操作,会记录到 replication buffer。第三阶段,主库把新写的命令,发送到从库。主库完成 RDB 发送后,会把 replication buffer 中的修改操作发给从库,从库再重新执行这些操作。这样主从库就实现同步啦。1.3.1 主从数据不一致 因为主从复制是异步进行的,如果从库滞后执行,则会导致主从数据不一致。主从数据不一致一般有两个原因:主从库网路延迟。从库收到了主从命令,但是它正在执行阻塞性的命令 (如 hgetall 等)。如何解决主从数据不一致问题呢?可以换更好的硬件配置,保证网络畅通。1.3.2 读取过期数据 Redis 删除数据有这几种策略:惰性删除:只有当访问一个 key 时,才会判断该 key 是否已过期,过期则清除。定期删除:每隔一定的时间,会扫描一定数量的数据库的 expires 字典中一定数量的 key,并清除其中已过期的 key。主动删除:当前已用内存超过最大限定时,触发主动清理策略。如果使用 Redis 版本低于 3.2,读从库时,并不会判断数据是否过期,而是会返回过期数据。而 3.2 版本后,Redis 做了改进,如果读到的数据已经过期了,从库不会删除,却会返回空值,避免了客户端读到过期数据。(发布时间是 2022 年 4 月 6 日)

FAQ

问:如何快速判断 Redis 节点是主节点还是从节点?

Redis集群主从状态怎么判断?分布式存储架构是什么样的?

答:可以通过执行 info replication 命令,查看 role 字段,若为 master 则为主节点,若为 slave 则为从节点;或在集群模式下使用 cluster nodes 命令,查看节点标识。

问:Redis 分布式集群架构中数据是如何分片的?

答:Redis 集群将整个数据集划分成 16384 个哈希槽(Hash Slot),每个主节点负责一部分槽,数据通过键的哈希值映射到具体的槽上,从而实现数据的分布式存储。

Redis集群主从状态怎么判断?分布式存储架构是什么样的?

问:主从复制过程中如何保证数据一致性?

答:主从复制采用异步同步方式,主节点将写命令发送给从节点,从节点执行相同命令。通过全量同步(RDB)和增量同步(复制积压缓冲区)机制,确保从节点数据最终与主节点一致。