Redis提供了三种集群模式,下面我重点详解3种Redis种集群模式的原理及优缺点等区别@mikechen
Redis主从复制模式
1.Redis主从复制定义
Redis主从复制模式是一种常见的数据复制和高可用方案,它允许将一个Redis服务器(主节点)的数据复制到多个Redis服务器(从节点)。
如下图所示:
主节点(Master): 主节点是数据的源头,负责接收写入操作并保存数据。
从节点(Slave): 从节点是主节点的副本,它复制主节点的数据并响应读取请求。
2.Redis主从复制工作原理
复制过程:
-
- 从节点在连接到主节点时发送复制请求,并请求从主节点复制数据。
- 主节点接受从节点的复制请求,将自己的数据发送给从节点。
- 从节点接收数据并将其保存为自己的副本。
- 从节点在接收完整的数据副本后,与主节点保持持续的连接,并在主节点有新的数据更新时进行增量同步。
3.Redis主从复制优缺点
Redis主从复制优点:做到读写分离,提高服务器性能;
Redis主从复制缺点:在主从模式中,一旦Master节点由于故障不能提供服务,需要人工将Slave节点晋升为Master节点。
Redis哨兵模式
1.为什么需要哨兵模式?
刚刚上面讲到了主从模式当主服务器宕机后,需要手动把一台从服务器切换为主服务器,需要人工干预费事费力,为了解决这个问题出现了哨兵模式。
如下图所示:
Redis哨兵模式(Redis Sentinel)是用于实现高可用性(High Availability)的Redis架构。
它通过引入一组哨兵进程来监控和管理Redis服务器,以便在主节点(Master)发生故障时自动进行故障转移。
2.哨兵模式工作原理
当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
如下图所示:

- 哨兵(Sentinel): 哨兵是一组特殊的Redis进程,负责监控Redis服务器的健康状态。
- 主节点(Master): 主节点是处理写操作并保存数据的Redis服务器。
- 从节点(Slave): 从节点是主节点的副本,负责复制主节点的数据。
- 故障转移: 当哨兵检测到主节点不可用时,它会发起故障转移过程,将一个从节点提升为新的主节点。
- 选举机制: 哨兵使用选举机制来决定哪个从节点将被提升为新的主节点。
- 客户端访问: 客户端可以直接连接到主节点或通过哨兵进行访问。
3.配置Redis哨兵模式
涉及以下步骤:
- 配置哨兵的配置文件,指定监控的Redis服务器地址和端口。
- 启动哨兵进程。
- 在Redis服务器的配置文件中指定哨兵的地址和端口。
- 启动Redis服务器。
- 客户端可以连接到哨兵或主节点进行读写操作。
4.哨兵模式的优缺点
哨兵模式优点:最大的优点就是主从可以自动切换,系统更健壮,可用性更高;
哨兵模式缺点:最大的缺点就是还要多维护一套哨兵模式,实现起来也变的更加复杂增加维护成本;
Redis集群模式
1.Redis集群模式简介
Redis集群模式是一种分布式架构,用于在多个Redis节点之间分片和复制数据,以实现高可用性和水平扩展。
2.Redis集群模式原理
在Redis的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383,还有一个就是cluster。
如下图所示:
- 分片(Sharding): 在Redis集群中,数据被分片到多个节点上,每个节点只负责管理和存储部分数据,通过将数据分散到不同的节点上,实现数据的分布式存储。
- 复制(Replication): 每个分片可以有多个副本节点,主节点负责接收写操作并复制数据给副本节点。
- 节点间通信: Redis集群使用Gossip协议进行节点间的通信,每个节点都会与其他节点交换信息,包括节点的状态、数据迁移信息等。
- 故障转移: 当主节点发生故障时,Redis集群会自动进行故障转移,将一个副本节点提升为新的主节点。同时,集群会重新分片和迁移数据,以适应新的主节点。
- 客户端路由: 客户端可以连接到Redis集群,并通过集群的路由机制将请求发送到正确的节点。集群会根据数据的哈希值进行路由,以保证相同的数据总是被路由到同一个节点。
Redis集群模式应用
主要是针对海量数据+高并发+高可用的海量数据场景,Redis集群模式的性能和高可用性均优于哨兵模式。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获知最新一线技术干货!
