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

Redis 主从复制、哨兵与集群的关系及工作原理详解

一、核心概念与关系

Redis 的 主从复制哨兵(Sentinel) 和 集群(Cluster) 是逐步演进的高可用与分布式解决方案,三者关系如下:

  1. 主从复制:数据冗余与读写分离的基础。

  2. 哨兵:在主从基础上实现自动故障转移(高可用)。

  3. 集群:在分片(Sharding)基础上集成主从复制和自动故障转移(分布式+高可用)。

三者关系可总结为:

  • 主从复制 是数据同步的基础机制。

  • 哨兵 是主从的增强,提供故障检测与自动切换。

  • 集群 是更高维度的分布式架构,融合主从复制和分片技术。


二、主从复制(Master-Slave Replication)
1. 核心作用
  • 数据冗余:从节点(Slave)复制主节点(Master)数据,实现备份。

  • 读写分离:主节点处理写请求,从节点处理读请求,提升读吞吐量。

2. 工作原理
  1. 全量同步

    • 从节点首次连接主节点时,主节点生成 RDB 快照发送给从节点。

    • 从节点加载 RDB 文件完成初始数据复制。

  2. 增量同步

    • 主节点将写命令写入 复制缓冲区(Replication Buffer)

    • 从节点持续接收并执行缓冲区中的命令,保持数据一致性。

3. 架构局限
  • 单点故障:主节点宕机后需手动切换从节点为主节点。

  • 写性能瓶颈:所有写操作集中在主节点。


三、哨兵(Sentinel)
1. 核心作用
  • 监控:持续检查主从节点健康状态。

  • 自动故障转移:主节点宕机时,选举新主节点并通知客户端。

  • 配置中心:客户端通过哨兵获取最新的主节点地址。

2. 工作原理
  1. 监控阶段

    • 哨兵通过定期发送 PING 命令检测节点状态。

    • 若主节点未响应,哨兵将其标记为 主观下线(SDOWN)

  2. 选举阶段

    • 多个哨兵协商确认主节点 客观下线(ODOWN)

    • 哨兵通过 Raft 算法选举 领导者哨兵 负责故障转移。

  3. 故障转移

    • 领导者哨兵从从节点中选出新主节点(基于优先级、复制偏移量等)。

    • 通知其他从节点复制新主节点,并更新客户端连接。

3.经典架构

  1.            +------------+  |  Sentinel  |  +------------+  |  
    +------------+     |      +------------+  
    |  Master    |<----+----->|  Slave 1   |  
    +------------+            +------------+  |  v  
    +------------+  
    |  Slave 2   |  
    +------------+  

4.适用场景

  • 中小规模 Redis 服务,需要高可用但无需水平扩展

四、Redis 集群(Cluster)
1. 核心作用
  • 数据分片(Sharding):将数据分布到多个节点,突破单机内存限制。

  • 高可用:每个分片(Shard)采用主从复制,支持自动故障转移。

2. 工作原理
  1. 分片机制

    • 集群将数据划分为 16384 个哈希槽(Slot),每个节点负责部分槽。

    • 客户端通过 CRC16(key) % 16384 计算 key 所属槽,路由到对应节点。

  2. 节点通信

    • 节点间通过 Gossip 协议 交换状态信息(如槽分配、节点状态)。

  3. 故障转移

    • 若主节点宕机,其从节点通过 选举机制 升级为新主节点(类似哨兵)。

    • 客户端自动重定向到新主节点。

3. 典型架构
+----------------+       +----------------+  
|  Master 1      |<----->|  Slave 1-1     |  
| (Slots 0-5460) |       | (Replica)      |  
+----------------+       +----------------+  |  v  
+----------------+       +----------------+  
|  Master 2      |<----->|  Slave 2-1     |  
| (Slots 5461-10922)|    | (Replica)      |  
+----------------+       +----------------+  |  v  
+----------------+       +----------------+  
|  Master 3      |<----->|  Slave 3-1     |  
| (Slots 10923-16383) |  | (Replica)      |  
+----------------+       +----------------+  
4. 关键特性
  • 数据迁移:支持动态增删节点,槽可重新分配。

  • 跨槽操作限制MGETMSET 等命令需所有 key 在同一节点,否则需用 {hash_tag} 强制路由。

5. 适用场景
  • 大规模数据存储,需水平扩展和高可用性。

五、三者对比总结
特性主从复制哨兵模式集群模式
核心目标数据冗余、读写分离高可用(自动故障转移)分布式存储 + 高可用
数据分布全量复制全量复制分片(16384 槽)
故障处理手动切换自动切换自动切换(内置哨兵逻辑)
扩展性垂直扩展(单机)垂直扩展水平扩展(多节点分片)
适用场景小型应用中小型高可用场景大型分布式系统

六、常见问题解答

Q1:集群模式下还需要哨兵吗?

  • 不需要。集群内置了故障检测与转移逻辑,无需额外部署哨兵。

Q2:主从复制能否与集群共存?

  • 可以。集群中的每个分片(主节点)可配置多个从节点,形成“主从+集群”架构。

Q3:如何选择架构?

  • 数据量小 + 高可用需求 → 哨兵模式。

  • 数据量大 + 高可用需求 → 集群模式。

Q4:集群的故障转移时间?

  • 通常 10~30 秒,依赖节点状态检测和选举机制。

相关文章:

Redis 主从复制、哨兵与集群的关系及工作原理详解

一、核心概念与关系 Redis 的 主从复制、哨兵&#xff08;Sentinel&#xff09; 和 集群&#xff08;Cluster&#xff09; 是逐步演进的高可用与分布式解决方案&#xff0c;三者关系如下&#xff1a; 主从复制&#xff1a;数据冗余与读写分离的基础。 哨兵&#xff1a;在主从…...

XSD 对 XML 数据格式验证 java

xsd文件&#xff0c;文件名bean.xsd&#xff0c;放在当前java文件目录下 <?xml version"1.0" encoding"UTF-8"?> <xs:schema xmlns:xs"http://www.w3.org/2001/XMLSchema"><xs:element name"bean"><xs:comple…...

利用 ArcGIS Pro 快速统计省域各市道路长度的实操指南

在地理信息分析与处理的工作中&#xff0c;ArcGIS Pro 是一款功能强大的 GIS 软件&#xff0c;它能够帮助我们高效地完成各种复杂的空间数据分析任务。 现在&#xff0c;就让我们一起深入学习如何借助 ArcGIS Pro 来统计省下面各市的道路长度&#xff0c;这一技能在城市规划、…...

1.4 单元测试与热部署

本次实战实现Spring Boot的单元测试与热部署功能。单元测试方面&#xff0c;通过JUnit和Mockito等工具&#xff0c;结合SpringBootTest注解&#xff0c;可以模拟真实环境对应用组件进行独立测试&#xff0c;验证逻辑正确性&#xff0c;提升代码质量。具体演示了HelloWorld01和H…...

蓝桥杯备考:六级词汇积累(day5)

dense 稠密的 condense 压缩 compassion 同情&#xff0c;怜悯 compact 紧凑的&#xff0c;紧密的 resent 愤恨 sober 清醒的 sole 唯一的&#xff0c;独占的 solely only solemn 表情严肃的&#xff0c;庄重的 stun 使昏迷 Stunned by the impact, he lay on the ground won…...

掌握Kubernetes Network Policy,构建安全的容器网络

在 Kubernetes 集群中&#xff0c;默认情况下&#xff0c;所有 Pod 之间都是可以相互通信的&#xff0c;这在某些场景下可能会带来安全隐患。为了实现更精细的网络访问控制&#xff0c;Kubernetes 提供了 Network Policy 机制。Network Policy 允许我们定义一组规则&#xff0c…...

结合rpart包的决策树介绍

决策树与CART算法 决策树是一种基于树状结构的监督学习算法。它通过从根节点开始递归地对特征进行划分&#xff0c;构建出一棵树来进行决策。决策树的构建过程需要解决的重要问题有三个&#xff1a;如何选择自变量、如何选择分割点、确定停止划分的条件。解决这些问题是希望随…...

VScode代码格式化插件black失效问题

之前有如下提示&#xff1a; 没太当回事&#xff0c;发现还能用。之后突然就用不了了&#xff0c;跟着官方插件的文档来查看log&#xff1a; 查看发现提示&#xff1a; Message: TypeError: type object is not subscriptable 在github界面找到解决方案&#xff1a;安装Versio…...

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题(已解决)

【经验分享】Ubuntu20.04编译RK3568 AI模型报错问题&#xff08;已解决&#xff09; 前言问题现象问题分析解决方案总结 前言 这里使用的是Rockchip提供的rknn_model_zoo&#xff0c;https://github.com/airockchip/rknn_model_zoo/tree/main 此解决方案适用于Rockchip芯片在U…...

AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

云边有个稻草人-CSDN博客 目录 引言 一、什么是DeepSeek&#xff1f; 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型…...

基于SpringBoot实现旅游酒店平台功能一

一、前言介绍&#xff1a; 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高&#xff0c;旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求&#xff0c;旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…...

轻松上手 —— 通过 RPM 包快速部署 NebulaGraph

前言 在当今大数据时代&#xff0c;处理复杂关系数据的需求与日俱增&#xff0c;图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库&#xff0c;专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言&#xff0c;还拥有强大高效…...

每日一题——接雨水

接雨水问题详解 视频学习推荐 建议先参考以下视频进行学习&#xff1a; 问题描述 给定一个非负整数数组 height&#xff0c;表示每个宽度为 1 的柱子的高度图。计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 示例 1&#xff1a; 输入&#xff1a;height …...

MetaGPT发布的MGX与Devin深度对比

家人们&#xff0c;搞编程的都知道&#xff0c;工具选对了&#xff0c;效率能翻倍&#xff01;今天必须给大伙唠唠MetaGPT发布的MGX编程助手和Devin编程助手 。 先看MGX&#xff0c;简直是编程界的王炸&#xff01;它就像一个超神的虚拟开发团队&#xff0c;一堆智能助手分工明…...

网络安全技术整体架构 一个中心三重防护

网络安全技术整体架构&#xff1a;一个中心三重防护 在信息技术飞速发展的今天&#xff0c;网络安全的重要性日益凸显。为了保护信息系统不受各种安全威胁的侵害&#xff0c;网络安全技术整体架构应运而生。本文将详细介绍“一个中心三重防护”的概念&#xff0c;并结合代码示…...

03.06 QT

一、使用QSlider设计一个进度条&#xff0c;并让其通过线程自己动起来 程序代码&#xff1a; <1> Widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QThread> #include "mythread.h"QT_BEGIN_NAMESPACE namespace Ui {…...

【YOLOv12改进trick】多尺度大核注意力机制MLKA模块引入YOLOv12,实现多尺度目标检测涨点,含创新点Python代码,方便发论文

🍋改进模块🍋:多尺度大核注意力机制(MLKA) 🍋解决问题🍋:MLKA模块结合多尺度、门控机制和空间注意力,显著增强卷积网络的模型表示能力。 🍋改进优势🍋:超分辨的MLKA模块对小目标和模糊目标涨点很明显 🍋适用场景🍋:小目标检测、模糊目标检测等 🍋思路…...

SpringUI:打造高质量Web交互设计的首选元件库

SpringUI作为一个专为Web设计与开发领域打造的高质量交互元件库&#xff0c;确实为设计师和开发者提供了极大的便利。以下是对SpringUI及其提供的各类元件的详细解读和一些建议&#xff1a; SpringUI概述 SpringUI集合了一系列预制的、高质量的交互组件&#xff0c;旨在帮助设…...

鸿蒙Android4个脚有脚线

效果 min:number122max:number150Row(){Stack(){// 底Text().border({width:2,color:$r(app.color.yellow)}).height(this.max).aspectRatio(1)// 长Text().backgroundColor($r(app.color.white)).height(this.max).width(this.min)// 宽Text().backgroundColor($r(app.color.w…...

夏门大学DeepSeek 手册:从社会大众到高校及企业的全面应用实践研究(附 PDF 下载)

这 3 份手册分别从 DeepSeek 大模型概念、技术与应用实践、DeepSeek 大模型赋能高校教学和科研、DeepSeek 大模型及其企业应用实践-企业人员的大模型宝典几个角度进行全面分析&#xff0c;可以结合着清华、北大系列相互对照着学习。 清华北大推出的 DeepSeek 教程&#xff08;…...

嵌入式学习第二十三天--网络及TCP

进程通信的方式: 同一主机 传统 system V 不同主机 网络 --- 解决不同主机间 的进程间通信 网络 (通信) //1.物理层面 --- 联通(通路) //卫星 2G 3G 4G 5G 星链 (千帆) //2.逻辑层面 --- 通路(软件) MAC os LINUX …...

策略模式详解:实现灵活多样的支付方式

多支付方式的实现&#xff1a;策略模式详解 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以互换使用。策略模式使得算法可以独立于使用它的客户端变化。本文将通…...

【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻

文章目录 Java 运算符&#xff1a;在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符&#xff1a;加减乘除&#xff08; - * / %&#xff09;2.2 除法与取余2.3 增量运算符&#xff08; --&#xff09;2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…...

Docker小游戏 | 使用Docker部署DOS游戏合集

Docker小游戏 | 使用Docker部署DOS游戏合集 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署dos-games网页小游戏下载镜像创建容器检查容器状态检查服务端口检查容器日志安全设置四、访问DOS游戏网页五、进阶玩法下载游戏拷贝…...

【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析

DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...

双足机器狗开发:Rider - Pi

双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…...

以商业思维框架为帆,驭创业浪潮前行

创业者踏入商海&#xff0c;如同航海家奔赴未知海域&#xff0c;需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架&#xff0c;正是创业者破解商业谜题的密钥&#xff0c;从需求洞察到落地执行&#xff0c;为创业之路铺就逻辑基石。 …...

基于单片机的智慧音乐播放系统研究

标题:基于单片机的智慧音乐播放系统研究 内容:1.摘要 随着科技的飞速发展&#xff0c;人们对音乐播放系统的智能化和个性化需求日益增长。本研究的目的是设计并实现一个基于单片机的智慧音乐播放系统。采用单片机作为核心控制单元&#xff0c;结合音频解码模块、存储模块和人机…...

ApoorvCTF Rust语言逆向实战

上周参加了国外的比赛&#xff0c;名称叫&#xff1a;ApoorvCTF 看一下老外的比赛跟我们有什么不同&#xff0c;然后我根据国内比赛对比发现&#xff0c;他们考点还是很有意思的&#xff0c;反正都是逆向&#xff0c;哈哈哈 ‍ Rusty Vault 题目描述&#xff1a; In the h…...

Mysql回表查询、索引覆盖等概念

参考&#xff1a;【mysql】MySQL中的回表查询、索引覆盖、索引下推、谓词下推_mysql回表-CSDN博客 【一】回表查询 【1】索引的存储形式 在InnoDB存储引擎中&#xff0c;根据索引的存储形式&#xff0c;又可以分为以下两种&#xff1a; 分类含义特点聚集索引必须有&#xff0…...