redis三种模式对比

Redis三种部署模式解析
  • 模式类型

主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)

  • 主从模式原理

同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

 

 

 

优点:

1、解决数据备份问题

2、做到读写分离,提高服务器性能

缺点:

1、每个客户端连接redis实例的时候都是指定了ip和端口号的,如果所连接的redis实例因为故障下线了,而主从模式也没有提供一定的手段通知客户端另外可连接的客户端地址,因而需要手动更改客户端配置重新连接

2、主从模式下,如果主节点由于故障下线了,那么从节点因为没有主节点而同步中断,因而需要人工进行故障转移工作

3、无法实现动态扩容

 

  • sentinel模式

Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

例如:

 

优点

1、Master 状态监测

2、如果Master 异常,则会进行Master-slave 转换,将其中一个Slave作为Master,将之前的Master作为Slave 

3、Master-Slave切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变,即master_redis.conf中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换

缺点:

1、如果是从节点下线了,sentinel是不会对其进行故障转移的,连接从节点的客户端也无法获取到新的可用从节点

2、无法实现动态扩容

 

  • cluster模式

在这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

一般集群建议搭建三主三从架构,三主提供服务,三从提供备份功能。

 

每一个节点都存有这个集群所有主节点以及从节点的信息。

    它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态。还有就是如果有一半以上的主节点宕机,那么我们集群同样进入发力了状态。这就是我们的redis的投票机制,具体原理如下图所示:

(1)投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),认为当前master节点挂掉.

    (2):什么时候整个集群不可用(cluster_state:fail)? 

        a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

        b:如果集群超过半数以上master挂掉,无论是否有slave,集群进入fail状态.

 

原理:

 

 

优点:

1、有效的解决了redis在分布式方面的需求

2、遇到单机内存,并发和流量瓶颈等问题时,可采用Cluster方案达到负载均衡的目的

3、可实现动态扩容

4、P2P模式,无中心化

5、通过Gossip协议同步节点信息

6、自动故障转移、Slot迁移中数据可用

缺点:

1、架构比较新,最佳实践较少

2、为了性能提升,客户端需要缓存路由表信息

3、节点发现、reshard操作不够自动化

 

参考:主从复制原理https://www.cnblogs.com/kevingrace/p/5685332.html

redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比

https://blog.youkuaiyun.com/keketrtr/article/details/78802571

Redis进阶实践之十一 Redis的Cluster集群搭建

https://www.cnblogs.com/PatrickLiu/p/8458788.html

Redis进阶实践之十二 Redis的Cluster集群动态扩容

https://www.cnblogs.com/PatrickLiu/p/8473135.html

 

<think>嗯,用户这次想了解Redis三种高可用部署方案。从对话历史看,我之前详细解释过逻辑卷文件系统的选择,现在需要转向Redis高可用架构。用户引用了三篇关于Redis主从、哨兵和集群的文章,说明ta已经做过基础调研,需要更系统的对比和实操指导。 用户可能是个运维工程师或架构师,正在为生产环境设计Redis方案。ta特意强调“不是用户真正需求”,暗示希望跳过基础概念,直接获取核心差异和选型建议。考虑到Redis在关键业务中的重要性,我需要重点强调故障转移机制和数据安全性。 先从技术维度梳理三种模式: 主从复制是最底层机制,所有高可用都依赖它。但单纯主从不具备自动故障转移能力,需要人工介入——这在生产环境是不可接受的。引用[1]提到集群模式的数据分片特性,这其实是主从+分片的组合方案。 哨兵模式的核心价值在于解决了主节点的自动故障转移。引用[2][3]都提到它通过监控和投票机制实现这一点,但要注意脑裂风险。实际部署时奇数个哨兵节点是必须的,这点需要强调。 集群模式最复杂也最强大。根据引用[1],它的哈希槽设计不仅实现了数据分片,还天然包含主从复制和故障转移能力。不过运维成本显著增加,比如reshard操作就需要谨慎处理。 用户没提但可能关心的是云服务差异:阿里云Redis集群版基于原生集群改造,AWS Elasticache则用代理层实现分片。这些可以作为后续扩展问题。 最后决定用对比表格突出关键差异,特别是故障转移时间和数据一致性这种运维敏感指标。示例命令要包含从部署到验证的完整流程,比如用redis-cli --cluster check验证集群状态。相关问题的设计要引导用户思考容量规划和监控集成,这都是高可用落地的实际痛点。</think>Redis三种核心高可用部署方案及其核心差异如下: --- ### 一、主从复制(Replication) **核心机制** 主节点(Master)处理写操作,异步/半同步复制数据到从节点(Slave),从节点仅提供读服务。 **高可用实现** - **故障恢复**:需**人工介入**切换主节点 - **数据安全**:依赖持久化(RDB/AOF)减少数据丢失 **适用场景** - 读写分离场景(如读密集型应用) - 数据备份容灾 **部署示例**: ```bash # 从节点配置 replicaof <master-ip> <master-port> ``` --- ### 二、哨兵模式(Sentinel) **核心机制** 独立哨兵进程集群监控主从节点,自动选举新主节点并切换流量。 **高可用特性** - **自动故障转移**:主节点宕机时,哨兵投票选举新主 - **服务发现**:客户端通过哨兵获取当前主节点地址 **关键限制** - **未解决数据分片**:单主节点写性能瓶颈 - **脑裂风险**:网络分区可能导致双主(需配置 `min-slaves-to-write` 缓解)[^3] **部署架构**: ``` 主节点 -- 从节点1 | | 哨兵1 哨兵2 -- 客户端 |_______| ``` --- ### 三、集群模式(Cluster) **核心机制** 分布式架构,数据分片到 16384 个哈希槽,每个分片由主从节点共同管理。 **高可用特性** - **数据分片**:突破单机内存限制(引用[1]) - **自愈能力**: - 主节点故障时,其从节点自动接管 - 节点间通过 Gossip 协议同步状态 **运维要求** - 至少 **3 主 3 从** - 客户端需支持集群协议(如 `redis-cli -c`) **数据分片示例**(引用[1]): ``` 节点A:槽 0-5460 节点B:槽 5461-10922 节点C:槽 10923-16383 ``` --- ### 方案对比总结 | **特性** | 主从复制 | 哨兵模式 | 集群模式 | |------------------|---------------|-----------------------|-----------------------| | **故障转移** | 手动 | 自动(秒级) | 自动(秒级) | | **扩展性** | 垂直扩展 | 垂直扩展 | **水平扩展** | | **数据分片** | ❌ | ❌ | ✔️ (16384 槽) | | **写性能** | 单点写入 | 单点写入 | **多点写入** | | **复杂度** | 低 | 中 | 高 | --- ### 选型建议 1. **读写分离 + 备份** → **主从复制** 2. **自动故障转移需求** → **哨兵模式**(需接受单点写瓶颈) 3. **海量数据/高并发** → **集群模式**(百GB级数据、万级QPS场景) > ⚠️ **注意**:所有方案依赖 **持久化机制**(RDB/AOF)保障数据安全(引用[2][3]) --- ### 集群模式操作示例 ```bash # 创建集群(3主3从) redis-cli --cluster create \ 192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379 \ 192.168.1.104:6379 192.168.1.105:6379 192.168.1.106:6379 \ --cluster-replicas 1 # 检查集群状态 redis-cli --cluster check 192.168.1.101:6379 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值