一、Redis主从复制概述

Redis主从复制(Master-Slave Replication)是Redis实现高可用性和读写分离的基础架构。通过主从复制,数据可以从一个Redis服务器(主节点)复制到一个或多个Redis服务器(从节点),从而实现数据的冗余备份、读写分离和故障恢复。

主从复制的主要优势包括:

  • 数据冗余:实现数据的热备份,是持久化之外的一种数据冗余方式

  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复

  • 读写分离:主节点提供写服务,从节点提供读服务,分担服务器负载

  • 高可用基石:主从复制是哨兵和集群能够实施的基础

二、主从同步核心原理

2.1 同步过程概述

Redis主从同步主要分为两个阶段:

  1. 全量同步(Full Resynchronization):从节点初次连接主节点时进行完整数据同步

  2. 增量同步(Partial Resynchronization):主节点将写命令持续发送给从节点

2.2 全量同步流程

  1. 建立连接:从节点连接主节点,发送PSYNC命令

  2. 生成RDB:主节点执行BGSAVE生成RDB快照文件

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

  4. 清空从节点数据:从节点接收RDB前会清空自身数据

  5. 加载RDB:从节点加载RDB文件恢复数据

  6. 发送缓冲区命令:主节点将生成RDB期间的写命令发送给从节点

2.3 增量同步机制

Redis 2.8之后引入了增量复制,主要基于以下三个核心概念:

  • 复制偏移量(Replication Offset):主从节点各自维护一个偏移量

  • 复制积压缓冲区(Replication Backlog):主节点维护的固定长度队列

  • 服务器运行ID(Run ID):每个Redis节点启动时生成的唯一标识

当从节点断开重连后,会向主节点发送自己的复制偏移量和Run ID。如果Run ID匹配且偏移量在积压缓冲区范围内,则执行增量同步,否则执行全量同步。

三、主从同步实现方式

3.1 配置方式

Redis提供多种方式配置主从复制:

配置文件方式

在从节点的redis.conf中添加:

replicaof <masterip> <masterport>
命令行方式

启动从节点后执行:

redis-cli> REPLICAOF 192.168.1.1 6379
运行时修改

在不重启服务的情况下修改:

redis-cli> REPLICAOF 192.168.1.1 6379
# 取消复制
redis-cli> REPLICAOF NO ONE

3.2 认证配置

如果主节点设置了密码,需要在从节点配置:

masterauth <master-password>

3.3 只读从节点

默认情况下,从节点是只读的(Redis 2.6+),可通过配置修改:

replica-read-only yes

四、主从同步优化与注意事项

4.1 网络中断处理

Redis 2.8+支持部分重同步,通过以下配置优化:

# 积压缓冲区大小(默认1MB)
repl-backlog-size 1mb
# 积压缓冲区存活时间(默认1小时)
repl-backlog-ttl 3600

4.2 无盘复制

Redis 6.0+支持无盘复制,主节点直接通过socket发送RDB到从节点:

repl-diskless-sync yes
# 等待更多从节点连接的时间
repl-diskless-sync-delay 5

4.3 重要配置参数

# 从节点ping主节点间隔
repl-ping-replica-period 10
# 复制超时时间
repl-timeout 60
# 是否禁用TCP_NODELAY
repl-disable-tcp-nodelay no

五、主从同步监控与管理

5.1 信息查看

使用INFO replication命令查看复制状态:

redis-cli> INFO replication

5.2 故障处理

常见问题及解决方案:

  • 同步延迟:检查网络状况,适当增大repl-backlog-size

  • 全量同步频繁:确保repl-backlog-size足够大,避免主节点频繁重启

  • 从节点数据不一致:检查主从节点maxmemory策略是否一致

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

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

相关文章

将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式

将ONNX模型转换为TensorFlow Lite格式 在深度学习模型部署过程中&#xff0c;我们常常需要将模型从一种格式转换为另一种格式&#xff0c;以适应不同的硬件平台和应用场景。本文将详细介绍如何将ONNX格式的模型转换为TensorFlow Lite格式&#xff0c;以便在移动设备或嵌入式设…

EXILIUM×亚矩云手机:重构Web3虚拟生存法则,开启多端跨链元宇宙自由征途

在链游与元宇宙赛道竞争加剧的当下&#xff0c;EXILIUM凭借其去中心化开放世界、链上资产确权与玩家自治经济系统&#xff0c;成为Web3原住民逃离“中心化牢笼”的首选之地。然而&#xff0c;其多链交互门槛高、跨设备身份管理复杂、链上安全风险频发等问题&#xff0c;让普通玩…

用3个字符表示2字节二进制数据

把1字节二进制数据&#xff0c;用可打印字符表示&#xff0c;可用十六进制。这样一来&#xff0c;1字节变2字节&#xff0c;2倍。 2字节的二进制数据&#xff0c;可以用3个字符来表示&#xff0c;1.5倍。 2562略小于413&#xff0c;65536<68921 需要准备41个符号 包括&…

第 3 章:神经网络如何学习

第 3 章&#xff1a;神经网络如何学习 在第二章中&#xff0c;我们详细了解了神经网络的静态结构&#xff1a;由神经元组成的层&#xff0c;以及连接它们的权重和偏置。现在&#xff0c;我们将进入整个教程最核心的部分&#xff1a;神经网络是如何从数据中"学习"的&…

RocketMQ 消息长轮询

文章目录 问题所在&#xff1a;消费者如何高效地获取消息&#xff1f;解决方案&#xff1a;长轮询 (Long Polling - “等待与观察”模式)长轮询 vs. 短轮询&#xff08;可视化对比&#xff09;为什么这个机制对 RocketMQ 这么好&#xff1f;关键的配置参数 让我们用一个简单易懂…

TensorFlow Serving学习笔记3: 组件调用关系

一、整体架构 TensorFlow Serving 采用模块化设计&#xff0c;核心组件包括&#xff1a; Servables&#xff1a;可服务对象&#xff08;如模型、查找表&#xff09;Managers&#xff1a;管理 Servable 生命周期&#xff08;加载/卸载&#xff09;Loaders&#xff1a;负责 Ser…

视图、索引介绍

目录 1、视图 1.1、什么是视图 1.2、创建视图 1.3、使用视图 1.4、修改视图 1.5、删除视图 1.6、视图的优点 2、MySQL存储结构 2.1、MySQL中的页 3、索引 3.1、索引的数据结构 3.2、B树 和 B树 3.3、B树在MySQL索引中的应用 3.4、索引分类 1、视图 1.1、什么是视…

QT6(46)5.2 QStringListModel 和 QListView :列表的模型与视图的界面搭建与源代码实现

&#xff08;154&#xff09;理论讲解 &#xff1a; 例题程序的界面搭建 &#xff1a; &#xff08;155&#xff09;以下开始完善代码 &#xff0c;先准备要给 model 的源数据&#xff0c;一些字符串 &#xff1a; 给出该头文件&#xff0c;以全面展示其内容&#xff1a; #i…

C++设计模式(GOF-23)——03 C++观察者模式(Observer / Event、发布-订阅模式、事件模式)

文章目录 一、观察者模式概述二、传统代码 vs 观察者模式对比1. 传统实现&#xff08;紧耦合&#xff09;2. 观察者模式实现&#xff08;松耦合&#xff09; 三、Mermaid 类图说明四、核心设计要点1. 接口分层设计2. 通知机制实现3. 扩展性验证 五、应用场景与注意事项适用场景…

海外 AI 部署:中国出海企业如何选择稳定、安全的云 GPU 基础设施?

2025年&#xff0c;中国 AI 企业在模型训练、产品落地和创新应用上不断刷新人们的认知。DeepSeek-R1、Qwen3 等国产大模型密集亮相&#xff0c;国内大模型产业热潮持续升温。与此同时&#xff0c;一个现实的问题也在被越来越多企业关注&#xff1a;模型虽然训练得起&#xff0c…

AI绘画工具实测:Stable Diffusion本地部署指

对于想要深度体验AI绘画的创作者来说&#xff0c;本地部署Stable Diffusion能带来更自由的创作空间。本文将详细介绍Windows系统下的部署流程&#xff0c;帮助你在个人电脑上搭建专业的AI绘画环境。 硬件准备与基础环境配置 部署前需确认电脑配置&#xff1a;建议NVIDIA显卡&…

macOS - 快速上手使用 YOLO

文章目录 一、关于 yolo二、安装三、命令行使用官方示例yolo cfgyolo predict 四、Python 调用results 数据 一、关于 yolo YOLO(YOLO&#xff08;You Only Look Once&#xff09;是一种流行的物体检测和图像分割模型&#xff0c;由华盛顿大学的约瑟夫-雷德蒙&#xff08;Jose…

<script setup> 语法糖

下面&#xff0c;我们来系统的梳理关于 Vue 3 <script setup> 语法糖 的基本知识点&#xff1a; 一、<script setup> 核心概念 1.1 什么是 <script setup>&#xff1f; <script setup> 是 Vue 3 中 Composition API 的编译时语法糖&#xff0c;它通过…

MYSQL-InnoDB逻辑存储结构 详解

InnoDB逻辑存储结构 段—区—页—行 表空间&#xff1a; 默认情况下InnoDB有一个共享表空间ibdata1&#xff0c;所有数据放入这个表空间&#xff0c;如果开启了innodb_file_per_table&#xff08;默认ON&#xff09;&#xff0c;每张表都可以放到一个单独的表空间&#xff0…

[特殊字符] Python 批量合并 Word 表格中重复单元格教程(收货记录案例实战)

在日常办公中&#xff0c;Word 表格中常出现重复的“供应商名称”或“物料编码”&#xff0c;会导致表格冗余且视觉混乱。这时候&#xff0c;用 Python 自动合并重复单元格可以大幅提升表格专业度和可读性。本篇给大家演示如何用 python-docx 实现该功能。 ✅ 功能概览 自动读取…

从零构建Node.js服务托管前端项目

下面是一个完整的指南&#xff0c;教你如何从零开始构建一个Node.js服务来托管前端项目&#xff0c;并代理API请求到其他服务器。 1. 项目初始化 # 创建项目目录 mkdir node-proxy-server cd node-proxy-server# 初始化npm项目 npm init -y# 安装必要依赖 npm install expres…

Lynx vs React Native vs Flutter 全面对比:三大跨端框架实测分析

一文看懂三大热门跨端技术的历史渊源、架构机制、开发体验、包体积对比与性能评估。 我陪你用实测数据带你理性选型&#xff0c;不踩坑&#xff0c;不盲信。 1. 框架简介&#xff1a;它们是谁&#xff1f;来自哪里&#xff1f;干嘛用&#xff1f; 框架名称所属公司发布时间初衷…

CKESC的ROCK 180A-H 无人机电调:100V 高压冗余设计与安全保护解析

一、核心技术参数与性能指标 电压范围&#xff1a;支持 12~26S 锂电&#xff08;适配 110V 高压系统&#xff09;电流特性&#xff1a; 持续工作电流&#xff1a;90A&#xff08;特定散热条件&#xff09;瞬时耐流&#xff08;1 秒&#xff09;&#xff1a;220A&#xff0c;3 …

优化 ArcPy 脚本性能

使用并行处理 如果硬件条件允许&#xff0c;可以使用 Python 的并行处理模块&#xff08;如 multiprocessing&#xff09;来同时处理多个小任务。这样可以充分利用多核处理器的优势&#xff0c;提高脚本的执行效率。 import multiprocessing def process_raster(raster):arcpy…

Windows下CMake通过鸿蒙SDK交叉编译三方库

前言 华为鸿蒙官方的文章CMake构建工程配置HarmonyOS编译工具链 中介绍了在Linux平台下如何使用CMake来配置鸿蒙的交叉编译环境&#xff0c;编译输出在Harmony中使用的第三方so库以及测试demo。 本文主要是在Windows下实现同样的操作。由于平台差异的原因&#xff0c;有些细节…