Redis 的主从复制

news2025/2/28 20:18:43

Redis 的主从复制

  • 1、主从复制的实现
  • 2、主从复制的同步功能(PSYNC)
    • 2.1、部分重同步

       本文讲解的Redis 主从复制机制,是基于 2.8及以后的版本而言,2.8以前的版本主从复制机制与此有所不同,请知悉。

       Redis的复制功能分为 同步 (psync) 和 命令传播 (command propagate)两个操作。

 

1、主从复制的实现

 

  • 设置主服务器的地址和端口

    # 查看redis服务在集群中的主从角色
    info replication
    # 设置主从关系:设从不设主
    # 在Redis5.0之前的版本中,配置主从复制通常使用SLAVEOF命令。从Redis5.0开始,推荐使用REPLICAOF命令来代替SLAVEOF
    ## 在从服务器上设置
    slaveof <主服务器ip> <主服务端口>
    
  • ② 建立套接字连接

  • ③ 发送 PING 命令

  • ④ 身份验证

  • ⑤ 发送端口信息

  • 同步

    • PSYNC 执行完整重同步部分重同步
  • 命令传播

    • 完成同步后,主从服务器就进入命令传播阶段。当主服务器的数据库状态被修改(例如,执行了写命令如SET、DEL等)时,主从服务器的数据库状态可能会出现不一致。为了解决这个问题,主服务器会将导致不一致的写命令(即主服务器接收到的新写命令)发送给从服务器,从服务器在接收到这些命令后会执行它们,从而使其数据库状态与主服务器保持一致。

 

2、主从复制的同步功能(PSYNC)

 

      2.8及以后的版本主从复制主要是基于 PSYNC 命令,PSYNC命令具有完整重同步(full resynchronization) 和部分重同步(partial resynchronization)两种模式。

  • 完整重同步:用于处理初次主从复制的情况。通过让主服务器创建并发送 RDB 文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步。
  • 部分重同步:用于处理断线(网络抖动等)后主从复制情况。当从服务器在断线后重新连接主服务器时,如果条件允许(如从服务器提供的复制偏移量在复制缓冲区内),主服务器将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器接收并执行这些写命令。

 
在这里插入图片描述

使用 PSYNC 命令来进行断线后重复制时间流程图:

时间线主服务器从服务器
T0主从服务器完成同步主从服务器完成同步
T1执行并传播 SET k11 v11执行主服务器传来的 SET k11 v11
T2执行并传播 SET k22 v22执行主服务器传来的 SET k22 v22
T180执行并传播 SET k99 v99执行主服务器传来的 SET k99 v99
T181执行并传播 SET k100 v100执行主服务器传来的 SET k100 v100
T182主从服务器连接断开主从服务器连接断开
T183执行 SET k101 v101断线中,尝试重新连接主服务器
T184执行 SET k102 v102断线中,尝试重新连接主服务器
T185执行 SET k103 v103断线中,尝试重新连接主服务器
T186主从服务器重新连接主从服务器重新连接
T187向主服务器发送 PSYNC 命令
T188向从服务返回 +CONTINUE 回复,表示执行部分重同步
T189接收 +CONTINUE 回复,准备执行部分重同步
T190向从服务器发送 SET k101 v101、SET k102 v102、SET k103 v103 三个命令
T191接收并执行主服务器传来的三个 SET 命令
T192主从服务器再次完成同步主从服务器再次完成同步

2.1、部分重同步

 
部分重同步主要有以下三个部分构成:

  • ① 主服务器的复制偏移量(replication offset) 和从服务器的复制偏移量。
  • ② 主服务器的复制积压缓冲区(replication backlog)
  • ③ 服务器的运行ID(runid)

 

       重点说一下主服务器的复制积压缓冲区:当主服务器进行命令传播时,它不仅将写命令发送给所有从服务器,还会将写命令入队到复制积压缓冲区。主服务器的复制积压缓冲区会保存一部分最近传播的写命令,并且复制积压缓冲区会为队列中的每个字节记录相应的复制偏移量。复制积压缓冲区设置的默认大小为 1MB.

 
 
 
 
 
 
 
.

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

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

相关文章

HCIP 6(BGP综合实验)

一、实验拓扑 二、实验要求 1.AS1中存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告&#xff1b;AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告&#xff0c;最终要求这两个环回可以…

bash tab 补全报错 bash: syntax error near unexpected token `(‘

使用 vim 编辑文件时&#xff0c;敲下 vim xxx 后&#xff0c;再键入 tab 键报进行补全报错 bash: syntax error near unexpected token (. 打开 bash 的命令执行详情 set -v 定位到具体的代码&#xff1a; 显然&#xff0c;代码位于 bash 补全的逻辑当中。 定位代码具体的…

SpringCloud 2023.0.1

本文介绍如何使用 springboot3及cloud2023 进行微服务模块化开发 采用父-module 模块开发 父工程 demo-java pom.xml <!--配置 springboot的依赖的版本号, 方便 module 进行继承--><dependencyManagement><dependencies><!--增加 springboot的依赖--&g…

亲测-wordpress文章实时同步发布修改删除多个站点的WP2WP插件

一款将wordpress文章同步到其他WordPress网站的插件&#xff0c;通过这款插件&#xff0c;可以保持不同博客之间文章发布、修改、删除的同步。 安装步骤&#xff1a; 主站和分站都要上传这个插件 1.把插件上传到wp-content\plugins解压出来wp2wp文件夹&#xff0c;然后启用插…

【强训笔记】day20

NO.1 思路&#xff1a;先判断能对砍几个回合&#xff0c;取最小值&#xff0c;因为回合数是整数&#xff0c;所以可能存在都大于0的情况&#xff0c;再判断一下如果都存活就再对砍一次&#xff0c;直到一家存活或者都死亡。 代码实现&#xff1a; #include<iostream>u…

【智能算法】最优捕食算法(OFA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2017年&#xff0c;GY Zhu受到动物行为生态学理论启发&#xff0c;提出了最优捕食算法&#xff08;Optimal Foraging Algorithm, OFA&#xff09;。 2.算法原理 2.1算法思想 OFA灵感来源…

四川景源畅信:小白做抖音电商怎么样?

在数字时代&#xff0c;抖音已成为一个不可忽视的电商平台。对于初入行的小白来说&#xff0c;涉足抖音电商似乎既充满机遇又伴随着挑战。要判断小白做抖音电商的可行性&#xff0c;我们不妨从几个关键方面进行深入探讨。 一、市场趋势与流量获取 抖音作为新媒体的代表之一&…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第一周) - 自然语言处理介绍和线性分类

自然语言处理介绍和线性分类 1. 自然语言处理介绍2. 线性二分类3. 情感分析和基础特征提取 3.1. 情感分析3.2. 特征提取3.3. 文本预处理 4. 学习的基础-梯度下降算法5. 感知机6. 逻辑回归7. 情感分析8. 感知机和逻辑回归 1. 自然语言处理介绍 自然语言处理的目标是什么 能够解…

最新兼职副业推荐,支付宝生活号分成计划上线,千万不要错过

支付宝之所以推出分成计划&#xff0c;是因为目前支付宝正在努力迎头赶上市场&#xff0c;不能让抖音独占鳌头。因此&#xff0c;从1月份开始&#xff0c;支付宝推出了直播板块&#xff0c;紧接着在4月份又启动了视频分成计划。 周周近财&#xff1a;让网络小白少花冤枉钱&…

Git 的原理与使用(上)

Git是一个分布式版本控制系统&#xff0c;它被广泛用于协作开发和管理软件项目。开发人员可以通过Git来跟踪文件的变化、协调工作、并管理项目的不同版本。 Git允许用户在不同的分支上开发新功能&#xff0c;然后合并这些分支并确保团队成员之间的工作协调一致。此外&#xff…

打印图形(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i, j;//循环打印&#xff1b;for (i 0; i < 5; i){//列&#xff1b;for (j 0; j &…

数据链路层——计算机网络学习笔记三

使用点对点信道的数据链路层 前言&#xff1a; 1.数据链路层的重要性&#xff1a;网络中的主机、路由器都必须实现数据连输层&#xff1b; 2.数据链路层中使用的信道&#xff1a; 点对点信道&#xff1a;这种信道是一对一的通信方式&#xff1b; 广播信道&#xff1a;使用一对多…

爱普生推出5G基站可用耐高温高稳定性温补晶振

爱普生推出了六款新的温补晶振型号:TG7050CKN&#xff0c;TG7050SKNTG7050CMN&#xff0c;TG7050SMN&#xff0c;TG-5510CA&#xff0c;TG-5511CA。这几款的特点就是耐高温温度可达105℃C高温&#xff0c;而且都是高稳定性温补晶振&#xff0c;而且都是7050尺寸&#xff0c;这个…

python代码实现TF-IDF

1、TF-IDF解释 TF-IDF&#xff08;Term frequency–inverse document frequency&#xff09;&#xff0c;中文翻译就是词频 - 逆文档频率&#xff0c;是一种用来计算关键词的传统方法。 TF&#xff08;Term Frequency&#xff09;&#xff1a;TF 的意思就是词频&#xff0c;是…

031.下一个排列Java实现

题意 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&#…

上位机图像处理和嵌入式模块部署(树莓派4b使用的注意事项)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 树莓派系列开发板最早的时候&#xff0c;价格还是比较高的。不过由于它生态比较丰富&#xff0c;使用起来比较方便&#xff0c;所以大家都默认了它…

光学镜片镀膜自动上下料工艺解决方案

在当今竞争激烈的制造业市场中&#xff0c;如何提高产品质量和生产效率成为了企业关注的焦点。富唯镀膜上下料设备以其高精度上下料技术&#xff0c;成为了产业升级的得力助手。 产品介绍 实现功能&#xff1a;富唯镀膜上下料设备拥有先进的设计理念和精湛的技术工艺&#xff…

前端小技巧:如何自定义网页的右键菜单(如何禁用网页的右键菜单)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 右键菜单设置 📒📝 自定义右键菜单实现步骤📝 示例代码📝 涉及的JavaScript语法和参数📝 禁用特定区域的右键菜单⚓️ 相关链接 ⚓️📖 介绍 📖 在网页设计中,一个直观且个性化的右键菜单可以显著提升用户的交互…

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代&#xff0c;数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形&#xff0c;我们能够更好地理解数据&#xff0c;挖掘其背后的信息。Pyecharts&#xff0c;作为一款基于Python的数据可视化库&#xff0c;凭借其丰富的图表类型…

【回溯 字典树(前缀树)】212. 单词搜索 II

本文涉及知识点 回溯 字典树&#xff08;前缀树&#xff09; LeetCode212. 单词搜索 II 给定一个 m x n 二维字符网格 board 和一个单词&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二维网格上的单词 。 单词必须按照字母顺序&#xff0c;通过 相邻的单元…