Redis_主从复制
8. 主从复制
8.1 简介
主从库采用读写分离的方式
- 读操作:主库、从库都可以处理
- 写操作:首先写到主库执行,然后再将主库同步给从库。
实现读写分离,性能扩展
容灾快速恢复

8.2 主从复制步骤
- 创建一个目录 ,在root下创建一个myredis的目录
mkdir myredis//创建目录 cd myredis //进行目录 cp /opt/reids-6.2.6/redis.conf redis_1.conf //cp 源文件 目标文件 ls - 关闭aof
- 使用vi编辑三个conf文件,redis_6379.conf,redis_6380.conf,redis_6381.conf做为一主二从配置,配置文件内容如下所示:
include redis_1.conf pidfile /var/run/reids_6379.pid port 6379 dbfilename dump6379.rdb - 分别启动三个服务
[root@localhost myredis]# redis-server redis_6379.conf [root@localhost myredis]# redis-server redis_6380.conf [root@localhost myredis]# redis-server redis_6381.conf [root@localhost myredis]# ps -ef|grep redis root 7289 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6379 root 7296 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6380 root 7302 1 0 17:35 ? 00:00:00 redis-server 127.0.0.1:6381 root 7316 6663 0 17:35 pts/0 00:00:00 grep --color=auto redis - 在三个客户端,模拟分别连接到不同服务器
redis-cli -p 端口号 redis-cli -p 6379 redis-cli -p 6380 redis-cli -p 6381 - 查看服务器状态
info replication - 在6380和6381上调用replicaof ,将其从属于6379(如果是三台服务器以上步骤可以跳过,直接配置从属服务器)
replicaof 127.0.0.1 6379 - 在主库上可以写入数据,从库不能写入数据
- 主库和从库都可以读数据
8.3 服务器宕机演示
8.3.1 从服务器宕机
- 6381上调用shutdown
- 在主服务器上写入数据
- 6381重新连上时,仍然可以接收到主服务器的数据
8.3.2 主服务器宕机
- 6379服务器调用shutdown
- 在从服务器上仍然可以读取数据
- 从服务器显示主服务器的状态为down
- 当主服务器重新启动,从服务器显示主服务器的状态是up
8.4 主从同步原理

第一阶段
- 主从建立连接,协商同步。从库和主库建立连接,告诉主库即将进行同步操作。主库需要确认并回复,主从就可以开始进行同步处理了。
- 从库向主库发送一个psync指令,包含两个参数。一个是主库的runID,另一个是复制进度offset。
- runID是每个redis实例启动时生成的一个随机ID,唯一标识。第一次复制时,从库不知道主库的runid,所以设为一个"?"。
- offset,-1表示第一次复制
- 主库收到指令后,会发送给从库fullresync指令去响应,带着主库的runid,还有目前复制进度offset。
- 从库会记录下这两个参数。fullresync表示全量复制。主库把所有内容都复制给从库
第二阶段
- 主库将所有数据发送给从库进行同步。从库收到rdb文件后,在本地把原有的数据清除,同步从主库接收到的rdb文件 。
- 如果在主库把数据跟从库同步的过程中,主库还有数据写入,为了保证主从数据的一致性,主库会在内
- 存中给一块空间replication buffer,专门记录rdb文件生成后收到的所有写操作
第三阶段
- 主库把第二阶段执行过程中新收到的操作,再发送给从库,从库再加载执行这些操作,就实
现同步处理了。
8.5 主-从-从模式
采用主-从-从模式,将主库生成和传输rdb文件的压力,以级联方式分散到从库上。

8.6 网络连接异常情况
在redis2.8之前,如果网络异常,再次连接后,需要做全量复制
从redis2.8之后,采用增量复制方式。repl_backlog_buffer缓冲区。当主从网络断开后,主库把收到写
操作,写入replication buffer,同时,也写入到repl_backlog_buffer缓冲区.
这个缓冲区,是一个环形缓冲区,主库会记录自己写到的位置,从库会记录自己读到的位置。
在之前还是会识别一下环形缓冲区还能不能够提供完整的数据,如果不能就进行全量同步了

- repl_backlog_size参数
- 缓冲空间大小=主库写入速度 * 操作大小-主从库网络传输速度 * 操作大小
- repl_backlog_size=缓冲空间大小*2
- 2000 * 2-1000 * 2=2000 大约为2M 乘2 所以repl_backlog_size值为4M
相关文章:
Redis_主从复制
8. 主从复制 8.1 简介 主从库采用读写分离的方式 读操作:主库、从库都可以处理写操作:首先写到主库执行,然后再将主库同步给从库。 实现读写分离,性能扩展 容灾快速恢复 8.2 主从复制步骤 创建一个目录 ,在root下创建一个m…...
Postman 的 Pre-request Script 使用RSA加解密
文章目录 一、概述 一、概述 Postman内置的Js不支持进行RSA加解密,所以需要引入forgeJS来实现。在 Pre-request Script使用以下脚本: // ------ 导入RSA ------ if (!pm.globals.has("forgeJS")) {pm.sendRequest("https://raw.githubu…...
【Swagger】只需要3步搭建Swagger环境,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示
目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关,启动Swagger功能 4. 启动项目,查看效果 Swagger 的功能这里就不多说明了,相信大家都懂的,好奇多问一句,大家有知道其…...
pytest运行时参数说明,pytest详解,pytest.ini详解
一、Pytest简介 1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点: 简单灵活,容易上手,支持参数化 2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试…...
Matplotlib绘图知识小结--Python数据分析学习
一、Pyplot子库绘制2D图表 1、Matplotlib Pyplot Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。 Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。 Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行…...
mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)
以上四个事件都是与鼠标相关的事件,其中mouseenter和mouseover均是鼠标移入时触发的事件,但是使用mouseover的时候会触发冒泡事件,也就是,当父元素和子元素均绑定mouseover事件的时候,如果触发子元素的mouserover事件&…...
【论文阅读】基于深度学习的时序预测——Autoformer
系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...
【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数
AI学习目录汇总 1、什么是块? 在线性模型中,我们关注过单个神经元(单个神经网络的输入和输出); 在多层感知机中,我们关注过整层的神经元(前一层的输出作为后一层的输入); 如果将“多层感知机”视为一整体,称为“块”,可以将前一个块的输出作为后一个块的输入。 块…...
Flink之Task解析
Flink之Task解析 对Flink的Task进行解析前,我们首先要清楚几个角色TaskManager、Slot、Task、Subtask、TaskChain分别是什么 角色注释TaskManager在Flink中TaskManager就是一个管理task的进程,每个节点只有一个TaskManagerSlotSlot就是TaskManager中的槽位,一个TaskManager中可…...
计算机竞赛 python 爬虫与协同过滤的新闻推荐系统
1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python 爬虫与协同过滤的新闻推荐系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 该项目较为新颖&…...
如何使用Kali Linux进行密码破解?
今天我们探讨Kali Linux的应用,重点是如何使用它来进行密码破解。密码破解是渗透测试中常见的任务,Kali Linux为我们提供了强大的工具来帮助完成这项任务。 1. 密码破解简介 密码破解是一种渗透测试活动,旨在通过不同的方法和工具来破解密码…...
【Freertos基础教程】任务管理之基本使用
文章目录 前言一、freertos任务管理是什么?二、任务管理涉及到的一些概念1.任务状态2.优先级3.栈(Stack)4.事件驱动5.协助式调度(Co-operative Scheduling) 二、任务的基本操作1.创建任务什么是任务 2.创建任务3.任务的删除4.任务的调度3.简单示例 总结 前言 本fre…...
VMware安装BC-linux-eluer 21.10,配置网络
参考配置:https://hiworld.blog.csdn.net/article/details/121608950 /etc/sysconfig/network-scripts/ifcfg-ens33 配置内容如下: TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_…...
2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程
安装MSYS2 msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有:msys,cygwin,mingw 优势&…...
【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁
1、Redisson 介绍 Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)。Redisson 在基于 NIO 的 Netty 框架上,充分的利用了 Redis 键值数据库提供的一系列优势,在 Java 实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的…...
宝藏级画图工具-drawio
今天推荐一款非常好用的免费开源画图工具drawio. Drawio即可以下载安装到本地,也可以在线编辑,在线编辑网址为 https://app.diagrams.net/。 本地版下载地址为https://github.com/jgraph/drawio-desktop/releases 1、支持各类图形 Drawio可以非常便捷…...
36_windows环境debug Nginx 源码-使用 VSCode 和WSL
文章目录 配置 WSL编译 NginxVSCode 安装插件launch.json配置 WSL sudo apt-get -y install gcc cmake sudo apt-get -y install pcre sudo apt-get -y install libpcre3 libpcre3-dev sudo apt-get...
海康威视iVMS综合安防系统任意文件上传(0Day)
漏洞描述 攻击者通过请求/svm/api/external/report接口任意上传文件,导致获取服务器webshell权限,同时可远程进行恶意代码执行。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和…...
SOME/IP通信对数据包的大小有要求
SOME/IP通信对数据包的大小有要求,因为SOME/IP是基于UDP协议的,而UDP协议有一个最大传输单元(MTU)的限制,即每个数据包的大小不能超过MTU的值。 不同的网络环境下,MTU的值可能不同,一般在1500字节到9000字节之间。 如果SOME/IP数据包的大小超过了MTU的值,那么就需要进…...
苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除
苹果电脑是很多人喜欢使用的一种电脑,它有着优美的外观,流畅的操作系统,丰富的应用程序和高效的性能。但是,随着时间的推移,苹果电脑也会产生一些不必要的文件和数据,这些文件和数据就是我们常说的垃圾。那…...
量子行走:从理论到Python实现——3. 量子门、电路与编程基础
目录 3. 量子门、电路与编程基础 3.1 单量子比特门 3.1.1 泡利门与旋转门 3.1.2 哈达玛门与相位门 3.2 多量子比特门 3.2.1 受控门 3.2.2 纠缠门与SWAP操作 3.3 量子电路构建与优化 3.3.1 电路表示与DAG结构 3.3.2 变分电路 3. 量子门、电路与编程基础 量子计算体系的…...
极客专属:OpenClaw+百川2-13B打造个人CLI智能助手
极客专属:OpenClaw百川2-13B打造个人CLI智能助手 1. 为什么开发者需要命令行智能助手 作为一个长期与终端打交道的开发者,我每天要重复执行大量机械操作:查看日志、运行测试、整理结果。这些工作虽然简单,却极其消耗精力。直到我…...
5个核心功能提升音频处理效率:AsrTools语音转文字工具用户指南
5个核心功能提升音频处理效率:AsrTools语音转文字工具用户指南 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into a…...
IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南
IDEA 2023.3 配置 JavaWeb 项目完整流程:从新建到打包 War 的保姆级避坑指南 作为一名长期使用 IntelliJ IDEA 进行 JavaWeb 开发的工程师,我深知在配置项目时可能遇到的各种"坑"。特别是对于刚接触 IDEA 的新手来说,从项目创建到最…...
会用AI的人,早已拉开职场差距!全岗位工作范式重构进行时
AI深度融入职场,正在改写工作的底层逻辑,会用AI的从业者,已在工作效率与职业发展上形成明显优势。从开发人员的研发流程,到方案人员的工作模式,再到各行各业的基础岗位,AI不再只是简单的效率工具࿰…...
别再死记公式了!用Python+Matplotlib亲手仿真LC并联谐振,直观理解选频原理
用PythonMatplotlib动态仿真LC并联谐振:从代码到物理直觉的沉浸式探索 当教科书上的LC并联谐振公式变成屏幕上跳动的曲线,当抽象的Q值概念转化为滑块调节时的实时波形变化,电子工程的学习便从枯燥的符号演算升维为一场充满探索乐趣的科学实验…...
多层PCB结构与设计核心技术解析
多层PCB内部结构解析与设计指南1. 多层PCB技术概述1.1 多层PCB的基本概念现代电子设备对电路板的要求越来越高,多层PCB已成为复杂电子系统的标准配置。与单层或双层PCB相比,多层PCB通过在绝缘基材上叠加多个导电层,实现了更高的布线密度和更优…...
用STM32+物联网做个智能药盒:手把手教你搞定毕设硬件选型与代码框架
基于STM32的智能药盒开发实战:从硬件选型到云端联调 在老龄化社会加速和慢性病管理需求激增的背景下,智能医疗设备正从医院走向家庭。作为嵌入式开发者,将STM32与物联网技术结合打造智能药盒,不仅能解决实际用药管理痛点ÿ…...
LVGL 7.11.0 Chart控件实战:5分钟搞定动态心率折线图(附完整代码)
LVGL 7.11.0 Chart控件实战:5分钟搞定动态心率折线图(附完整代码) 在嵌入式设备上实现流畅的数据可视化一直是开发者的痛点。LVGL作为轻量级图形库,其Chart控件能完美解决这一问题。本文将手把手教你用LVGL 7.11.0的Chart控件&am…...
vLLM-v0.17.1详细步骤:vLLM + Triton Ensemble实现多模型协同推理
vLLM-v0.17.1详细步骤:vLLM Triton Ensemble实现多模型协同推理 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,以其出色的吞吐量和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已…...
