详解redis(2):主从架构

一、什么是 Redis 高可用性(主从架构)

Redis 主从部署(Master–Replica)是 Redis 实现高可用性的第一步

一个 Redis主节点(Master)
多个 Redis从节点(Replica / Slave)

写操作:只能在主节点执行

读操作:可以在主节点或从节点执行

数据:由主节点同步到从节点

二、主从复制的工作机制

数据是如何同步的?

当客户端向主节点写数据时:

  1. 主节点在内存中执行写命令

  2. 主节点将该写命令复制一份

  3. 通过网络发送到所有从节点

  4. 从节点依次执行这些命令,保持数据一致

注意:
同步的是“写命令”,而不是结果数据

第一次同步(全量复制)

当一个从节点第一次连接主节点时:

  1. 从节点发送PSYNC请求

  2. 主节点fork()子进程

  3. 子进程生成RDB 快照

  4. 主节点将 RDB 文件发送给从节点

  5. 从节点加载 RDB 到内存

  6. 主节点再发送同步期间的增量命令

至此,主从数据完全一致

之后的同步(增量复制)

主节点维护一个复制缓冲区

只将新增写命令发送给从节点

效率高、网络开销小

三、主从架构下的读写流程

写请求流程

所有写操作集中在主节点

保证数据一致性

读请求流程

读操作可以分散到多个从节点

明显提升系统的读并发能力

四、主从架构带来的优势

读写分离,提高性能

主节点专注写

从节点分担读请求

非常适合“读多写少”的业务场景

数据冗余,提高安全性

数据在多个节点上保留副本

主节点宕机时,数据不会立即丢失

为高可用打基础

主从复制是:

哨兵模式的基础

Redis Cluster 的基础

五、主从架构带来的复杂性(分布式问题)

主节点宕机怎么办?

主节点不可用

从节点不会自动升级为主节点

系统仍然无法写入

主从模式本身并不等于高可用

数据一致性问题

主从复制是异步的

主节点写成功 ≠ 从节点一定同步成功

可能出现:

读到旧数据

主节点刚写完就宕机,数据尚未同步

网络分区问题

主从之间网络中断

从节点以为主节点失效

客户端可能同时向不同节点写入

复制延迟问题

从节点落后于主节点

延迟越大,读到旧数据的概率越高

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GESP认证C++编程真题解析 | 202312 八级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

使用llama_index 来实现一个RAG

环境uv ollamaRAG 的二个阶段 索引阶段 (Indexing Phase) 检索信息增强,让大模型参考本地的信息/文档,提高回答的质量加载数据 Indexing 文档加载,分割,将加载的 文本 解析成一系列 Nodes 生成 对每个node ,生成向量…

小程序毕设项目:基于springboot的保护濒危动物公益网站系统(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【课程设计/毕业设计】基于springboot的保护濒危动物公益网站系统保护动物网站、濒危动物保护【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

小程序计算机毕设之基于springboot的保护濒危动物知识科普、活动发布、在线捐赠公益网站系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【毕业设计】基于springboot的保护濒危动物公益网站系统(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

666666999999 - 教程

666666999999 - 教程2026-01-18 22:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-f…

亲测好用2026研究生AI论文网站TOP10:开题文献综述全攻略

亲测好用2026研究生AI论文网站TOP10:开题文献综述全攻略 2026年研究生AI论文写作工具测评:选对工具,事半功倍 在学术研究日益数字化的今天,AI论文写作工具已成为研究生们不可或缺的得力助手。然而,面对市场上琳琅满目的…

AionUi:与AI终端代理协作的跨平台桌面界面

✨ 项目概述 AionUi 是一个基于 Electron 框架构建的跨平台桌面应用,旨在为用户提供一个统一、可视化的图形界面,用于与多种 AI 终端代理(例如 Gemini CLI、Claude Code、Qwen Code、Goose CLI、Auggie 等)进行协作。它遵循模块化…

HarmonyOS智慧农业管理应用开发教程--高高种地---第1篇:项目初始化与环境搭建

第1篇:项目初始化与环境搭建 教程目标 通过本篇教程,你将学会: 安装和配置 DevEco Studio 开发环境配置 HarmonyOS SDK创建 HarmonyOS 应用项目理解项目结构配置应用权限 完成本教程后,你将能够成功创建并运行一个基础的 Harm…

C++11的一些特性

1. 左值引用 vs 右值引用左值引用定义:给左值取别名,用 &表示。特点:能获取地址,有持久状态可出现在赋值符号左边或右边主要作用是减少拷贝,提高效率int a 10; int& ref_a a; // 左值引用 const int&…

非标自动化设备工厂10个SolidWorks研发设计如何共享一台服务器的资源和算力 - 指南

非标自动化设备工厂10个SolidWorks研发设计如何共享一台服务器的资源和算力 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; fon…

Playwright数据库断言:测试前后数据验证

在自动化测试中,我们常常会遇到这样的场景:测试一个用户注册功能,接口返回了成功,但你真的确定用户数据正确写入数据库了吗?或者测试一个删除功能后,如何验证数据确实从数据库中移除了?这就是数…

GESP认证C++编程真题解析 | 202309 一级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

docker 搭建canal - BeYourSelf

一、参考文献Docker 安装 canal 详细步骤 乌班图安装java二、环境乌班图操作系统 Docker 29.1.4 Java 11.0.29 rabbitMQ三、前期准备安装Java11 # 先更新源 sudo apt-get update# 安装java11 sudo apt-get install op…

GESP认证C++编程真题解析 | 202309 二级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

2026年中国985高校人工智能专业综合实力十强排名

基于2025-2026年度教育部学科评估情况、CSRankings全球计算机科学排名、U.S.News世界大学学科排名及各高校国家级实验室配置,我们对国内985高校在人工智能领域的综合竞争力进行了深度梳理。第1名:清华大学 作为国内人工智能领域的“领头羊”,…

js函数防抖

1.0 js函数防抖 function debounce(fn, delay = 1000) {let timerId;return function (...args) {clearTimeout(timerId);timerId = setTimeout(() => {fn.apply(this, args);}, delay);}; }2.0 vue自定义ref防抖 i…

LeeCode_17 电话号码的字母组合

17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1: 输入:digits =…

Selenium 从环境搭建到 Web 自动化实战

Selenium 是目前最流行的 Web 自动化测试工具,支持 Chrome、Firefox 等主流浏览器,能模拟人工操作(点击、输入、跳转)实现网页自动化,广泛应用于接口测试、数据爬取、自动化部署等场景。本文从零基础入门,手把手…