当前位置: 首页 > news >正文

Redis主从模式和集群模式的区别

Redis 的 主从模式(Master-Slave Replication)集群模式(Cluster Mode) 是两种不同的高可用与扩展架构,它们解决的问题、架构设计和适用场景有显著区别。

以下是详细讲解:


📊 一、核心区别概览

特性主从模式(Master-Slave)集群模式(Cluster)
主要目的数据备份、读写分离、高可用数据分片 + 高可用 + 水平扩展
数据分布所有节点数据完全相同数据自动分片(Sharding)
是否支持水平扩展❌ 不支持(容量受限于单主)✅ 支持(可扩展到 1000+ 节点)
自动故障转移❌ 需借助哨兵(Sentinel)✅ 内置自动故障转移
客户端访问方式直连主或从需支持 Cluster 的客户端
数据容量上限单机内存限制多节点分摊,容量更大
复杂度简单较复杂

二、主从模式(Master-Slave Replication)

🔧 架构图:

      +-------------+|   Client    |+------+------+|| 写+------v------+|  Master     | ←---------+| (主节点)     |           |+------+------+           || 复制             | 读v                 |+------v------+    +-----v-------+|  Slave      |    |  Slave      || (从节点)     |    | (从节点)     |+-------------+    +-------------+

✅ 工作原理:

  • 主节点(Master):负责处理写操作。
  • 从节点(Slave):通过 异步复制 从主节点同步数据,只能处理读操作(可选)。
  • 客户端可将读请求分发到从节点,实现读写分离

✅ 优点:

  • 实现数据冗余备份,提高可用性。
  • 支持读写分离,提升读性能。
  • 配置简单,易于理解。

❌ 缺点:

  • 主节点单点故障:如果主节点宕机,无法自动切换(需搭配 Redis Sentinel 实现高可用)。
  • 无法水平扩展:所有数据仍在一台主节点上,容量受限。
  • 写操作无法扩展:所有写仍集中在主节点。

⚠️ 注意:主从模式本身不提供自动故障转移,必须配合 Redis Sentinel 使用。


三、集群模式(Redis Cluster)

🔧 架构图:

                +---------+| Client  |+----+----+|+-----------+-----------+|           |           |[0-5500]    [5501-11000]  [11001-16383]|           |           |+----v----+ +----v----+ +----v----+| Master1 | | Master2 | | Master3 ||   (M)   | |   (M)   | |   (M)   ||   /     | |   /     | |   /     || Slave1  | | Slave2  | | Slave3  ||   (S)   | |   (S)   | |   (S)   |+---------+ +---------+ +---------+

✅ 工作原理:

  • 数据被划分为 16384 个哈希槽(hash slots)
  • 每个键通过 CRC16(key) % 16384 计算归属的槽。
  • 每个主节点负责一部分槽(如 Master1 负责 0~5500)。
  • 每个主节点可配置一个或多个从节点,用于故障转移
  • 客户端直接连接任意节点,节点会通过 MOVED/ASK 重定向 引导客户端到正确节点。

✅ 优点:

  • 自动分片:数据分布到多个节点,突破单机内存限制。
  • 高可用:任一主节点宕机,其从节点会自动升级为主节点(基于 Gossip 协议和投票机制)。
  • 水平扩展:可动态添加/删除节点,重新分片。
  • 无中心节点:去中心化,节点间通过 Gossip 协议通信。

❌ 缺点:

  • 不支持跨节点的多键操作(如 MGET 多个 key 如果不在同一节点会失败)。
  • 配置和运维复杂。
  • 客户端必须支持 Redis Cluster 协议(如 Jedis、Lettuce)。

四、关键区别详解

1. 数据分布方式

  • 主从:全量复制,所有节点数据一致。
  • 集群:分片存储,每个节点只存一部分数据。

2. 高可用实现

  • 主从:需额外部署 Redis Sentinel 来监控主节点,实现故障转移。
  • 集群:内置故障检测和主从切换,无需 Sentinel。

3. 扩展性

  • 主从:读可扩展(加从节点),写不可扩展。
  • 集群:读写均可扩展(增加主节点)。

4. 客户端行为

  • 主从:客户端需知道主从角色,写主读从。
  • 集群:客户端通过重定向自动访问正确节点。

五、如何选择?

场景推荐模式
数据量小,追求简单主从 + Sentinel
需要读写分离主从 + Sentinel
数据量大(>10GB),需水平扩展Redis Cluster
高并发写入Redis Cluster
使用多键操作(如 MGET 所有 key)主从(或确保 key 在同一 slot)
微服务架构,独立缓存实例多个主从实例 或 Cluster

六、常见组合架构

✅ 高可用主从 + Sentinel

Master ←→ Sentinel↓
Slave  ←→ Sentinel
  • 适合中小规模应用。

✅ Redis Cluster(生产推荐)

3主3从(最小高可用集群)
  • 适合大规模、高并发场景。

✅ 总结

一句话总结说明
主从模式“一主多从,数据复制,读写分离”
集群模式“分片存储,自动故障转移,水平扩展”

🔑 核心口诀

  • 高可用 → 用 Sentinel + 主从Cluster
  • 水平扩展 → 必须用 Cluster
  • 简单稳定 → 用 主从 + Sentinel

文章转载自:

http://2Vfv4wdu.mjtft.cn
http://J5HuHxON.mjtft.cn
http://FJs1ZZht.mjtft.cn
http://eFSLae4F.mjtft.cn
http://N0SpPuMt.mjtft.cn
http://epHGSgLl.mjtft.cn
http://AcFYgD8t.mjtft.cn
http://TYLMubXr.mjtft.cn
http://i9iMzjub.mjtft.cn
http://NixWpnri.mjtft.cn
http://kQdDwNVu.mjtft.cn
http://JhYbRl15.mjtft.cn
http://oZIcqeG9.mjtft.cn
http://aMoF7Rg8.mjtft.cn
http://6Lrxff0p.mjtft.cn
http://oqAnSsWW.mjtft.cn
http://ID96nh55.mjtft.cn
http://txJZ4QXN.mjtft.cn
http://f6Gz61UG.mjtft.cn
http://EkY4JdX2.mjtft.cn
http://BhCHLQg2.mjtft.cn
http://BRQ0SC7C.mjtft.cn
http://lmSgvLbx.mjtft.cn
http://mIQVTnW9.mjtft.cn
http://kfOWvnN0.mjtft.cn
http://VjhkwHz7.mjtft.cn
http://XAgSUgz9.mjtft.cn
http://wjlgyjod.mjtft.cn
http://wGZkU5oy.mjtft.cn
http://3N8C3K2x.mjtft.cn
http://www.dtcms.com/a/376369.html

相关文章:

  • 基于51单片机水塔水箱液水位WIFI监控报警设计
  • AR消防头盔:火场救援的智能“透视眼”
  • 【MFC】对话框:位置属性(居中、绝对对齐、X位置Y位置)应用示例
  • 路由器无线桥接二级验证网络(初始密码和网页登录个人账号和密码)
  • 【MFC】对话框属性:X Pos(X位置),Y Pos(Y位置)
  • 工程师 - Onion Architecture in Software Development
  • Golang单例模式和工厂模式详解
  • Redis 分布式锁:从原理到实战的完整指南
  • 计算机网络——第一章 计算机网络体系结构
  • 【公共数据】《公共数据资源授权运营实施指南》核心观点
  • 姓名+身份证号码+人像实名认证接口-三要素身份证实名认证api
  • Linux编程笔记1-概念数据类型输入输出
  • 认知语义学对人工智能自然语言处理的影响与启示:从理论融合到未来展望
  • Markdown 介绍和使用教程
  • 实习——配置电源管理策略
  • Es6新特性总结
  • 【云原生网络篇】从 Private Endpoint 到 K8s Pod 对外注册:一次网络底层的全面探究
  • 老梁聊全栈系列:(阶段一)从单体到云原生的演进脉络
  • AI 模型训练过程中参数用BF16转向FP16的原因
  • win11,安装c++版OpenCV,带cuda
  • openEuler 24.03 (LTS-SP2)简单KVM安装+桥接模式
  • websocket 服务器往客户端发送的数据要加掩码覆盖吗?
  • LLM大语言模型部署到本地(个人总结)
  • TanStack Query Vue -vue的Axios Hooks
  • 鸿蒙应用之网络请求方案总结
  • 技术文章大纲:AI绘画—动漫角色生成赛
  • HTTPS 端口号详解 443 端口作用、iOS 抓包方法、常见 HTTPS 抓包工具与网络调试实践
  • 【iOS】单例模式
  • 工业智能终端赋能自动化生产线建设数字化管理
  • 在Vue项目中Axios发起请求时的小知识