【Redis】理论进阶篇------Redis的主从复制

一、原理解释

1、什么是Redis的主从复制

     主从复制,是指将一台Redis服务器的数据复制到其他Redis服务器。前者称为主节点(master),后者称为从节点(slave);对于数据的复制是单项的,只能从主节点到从节点。Master以写为主,Slave以读为主(读写分离)。

二、主从复制中的常用指令

①:info replication

可以查看复制节点的主从关系和配置的信息。

②:replicaof <主库IP> < 主库端口号>

一般写入redis.conf配置文件内部。

③:slaveof  <主库IP> < 主库端口号>

使用命令操作配置slave:若不是用②的方法写入配置文件,则当slave每次与master断开之后,都需要重新的连接。或者在运行期间修改slave的节点的信息,如果当前slave是主节点master1的从节点,当又出现一个master2主节点的时候,当前slave可以断开与master1的关系,转而与master2数据库同步形成主从关系。

④:slaveof no one

使当前的slave数据库停止与其他的master数据库的同步关系,转成主数据库,自立为王。

三、Redis常见三种配置方式

1、主从配置(一主二从)

命令:replicaof <主库IP> < 主库端口号>

注意:配从(库)不配主(库)

原理图:如果未配置 ,在默认情况下,这三台Redis服务器都是主节点

d1dc5ef26fac4e83b635cb31886a424a.png

如图所示:两个不同端口号的从机slave1与slave2通过我们的命令(配置文件),实现了以端口号6379为主机的一主二从的主从配置。此时,对于存储在master(可写、可读)中的指令,slave1与slave2都可以读取。

问题思考

①:从机是否可以执行写的操作?

答:从机只可以读取不可以写操作。

②:从机是如何复制的?

答:slave启动成功后会连接到 master后会发送一个sync同步命令,master接到命令,启动后台的存盘进程,同时收集所以接受的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据到slave,并完成一次完全同步。第复制流程如下:

第一次 全量复制:slave服务在接受到数据库文件数据后,将其存盘加载到内存中。

其次  增量复制:在连接master后的存储,则是master写一句,slave接受一句,一次一次的完成。

③:如果master断开,slave(从机)是否断开连接?

答:如果master断开,slave(从机)依旧连接主机,只是没有写的操做。如果,master重新回来了连接了Redis,slave是自动连接到master,对于master新的写的内容,slave依旧可以读取到。

④:slave断开,再重新连接,是否可以重新读取master中数据?

答:分两种情况:若是通过配置文件配置的从机,重新连接后,会读取配置文件重新变为从机,此时可以读取master中的内容;若是通过指令配置的slave,重启后的slave是一个主机,不能读取master中的内容。

2、薪火相传

命令:slaveof  <主库IP> < 主库端口号>

原理图:

4527f3c8db8d4b728f6e28eece54e059.png

如图所示:port为6379的Redis服务器是slave1的master,而 slave1又是slave2的master,而slave2同样可以接送到master的同步请求,像链条一样一次传递,而且slave1还可以有效的减轻主master写的压力。

问题思考

①:slave1做为slave2的master是否具有写的操作?

答:slave1依旧是slave依然不能执行写的操作,只是修改的数据传递的方向。

②:slave在中途转化master对像,还会保存之前的master的数据吗?

答:会清除之前的数据,拷贝最新的master的数据。

3、独立自主

命令:slaveof no one

原理图:

5ca8c483fa8b4f3ba03370e43e234e00.png

如图所示:在原来一主二从的基础上,slave2执行了我们的命令,那么slave2就会重新成为一个新主机(master)。

四、主从复制的优缺点

1、优点

①数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

②故障恢复:如果master宕掉了,使用哨兵模式,可以提升一个 slave 作为新的 master,进而实现故障转移,实现高可用。

③负载均衡:实现读写分离,一个 master 用于写,多个 slave 用于分摊读的压力。

④分担压力:Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Master的同步压力。

2、缺点

①:复制延迟,信号衰弱

所以的写的操作都是在master上操作,然后同步更新到slave上,所以从master同步到slave机器上有一点的延迟,当 系统频繁忙的时候,延迟会更加严重。

②:master挂了,在默认情况下,不会在slave节点中自动选择一个master,每次都需要人工干预。(最大缺点)

五、总结

    关于Redis的主从复制,从上面的讲解也可以看出它有个很大的缺点就是当主机宕机后,选择新的master的时候都需要人工干预,这在我们现实的项目中肯定不是这样来使用的,肯定使用的哨兵模式,后面就会做相关的关于哨兵模式的介绍。不过我觉得关于主从模式的介绍也是很重要的,因为我们只有知其然才会知其所以然,这也是我们为后面的学习做的铺垫。如果觉得这篇文章对屏幕前的小伙伴有所帮助,记得点赞👍支持哦!

 

 

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

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

相关文章

C#上位机与三菱PLC的通信06--MC协议之QnA-3E报文测试

1、A-3E报文回顾 1、存储区分类及访问规则 2、命令类型 命令由主命令子命令组成 3、报文结构 2、启动mc服务器 3、创建VS项目 这节继续使用上节的VS2022的项目&#xff0c;增加一个方法 MCTestA3E()&#xff0c;具体怎么创建项目&#xff0c;见上节的过程。C#上位机与三菱…

在 CentOS 平台下安装与配置 MySQL 5.7.36

CentOS平台常用有三种MySQL安装方式&#xff0c;即RPM安装包、二进制压缩包和源码包。一般来讲&#xff0c;建议使用二进制压缩包&#xff0c;因为该版本比其他的分发版使用起来要简单灵活。本次实验在 CentOS 7.6 平台上选用二进制压缩包安装方式。 1、清理MySQL安装环境 Cent…

MySQL 基础知识(九)之视图

目录 1 视图的介绍 2 视图算法 3 创建视图 4 查看视图结构 5 修改视图 6 删除视图 7 参考文档 1 视图的介绍 视图是一张并不存储数据的虚拟表&#xff0c;其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义&#xff0c;通过 SQL 语句使用视图时…

【6-1】使用hanlp进行实体抽取以及句法分析(问题待解决)

1.使用hanlp抽取法人名称、企业名称等信息 # -*- coding: utf-8 -*- from pyhanlp import *text1"1998年11月11日&#xff0c;马化腾和同学张志东在广东省深圳市正式注册成立“深圳市腾讯计算机系统有限公司”&#xff0c;之后许晨晔、陈一丹、曾李青相继加入。当时公司…

论文解读:Masked Generative Distillation

文章汇总 话题 知识蒸馏 创新点 带掩盖的生成式蒸馏 方法旨在通过学生的遮罩特征来生成老师的特征(通过遮盖学生部分的特征来生成老师的特征)&#xff0c;来帮助学生获得更好的表现 输入:老师:&#xff0c;学生:&#xff0c;输入:&#xff0c;标签:&#xff0c;超参数: 1:使…

水质监测站工作原理!

TH-LSZ06】水质监测站的工作原理基于现代化学和生物学技术&#xff0c;主要通过化学分析和生物检测两种方法来检测水中有害物质。化学分析技术包括酸碱度、氧化还原电位、重金属离子、有机物、氮和磷等&#xff0c;而生物检测技术则主要关注病毒、细菌、真菌等微生物。 在水质…

Mac M1芯片编译openjdk报错问题解决

使用命令&#xff1a; sudo sh configure --with-target-bits64 用mac m1芯片编译openjdk一直报错&#xff1a; configure: The tested number of bits in the target (64) differs from the number of bits expected to be found in the target (32) configure: error: Cann…

【前端工程化面试题目】webpack 的热更新原理

可以在顺便学习一下 vite 的热更新原理&#xff0c;请参考这篇文章。 首先有几个知识点需要明确 热更新是针对开发过程中的开发服务器的&#xff0c;也就是 webpack-dev-serverwebpack 的热更新不需要额外的插件&#xff0c;但是需要在配置文件中 devServer 属性中配置 hot&a…

云原生之容器编排实践-基于CentOS7搭建三个节点的Kubernetes集群

背景 前面采用 minikube 作为 Kubernetes 环境来体验学习 Kubernetes 基本概念与操作&#xff0c;这样避免了初学者在裸金属主机上搭建 Kubernetes 集群的复杂度&#xff0c;但是随着产品功能的逐渐完善&#xff0c;我们需要过渡到生产环境中的 K8S 集群模式&#xff1b;而在实…

【代码移植】UNIX/Linux/POSIX代码程序移植到Windows系统平台技术汇总与经验分享

​ 图片来源 UNIX (Linux) to Windows代码移植技术路线 MinGW MinGW/MinGW-W64是用Windows原生系统API实现的&#xff0c;在Windows上运行的GCC编译工具链&#xff0c;可以编译出Windows原生应用程序。 MinGW编译工具链的生态位和微软官方的MSVC类似。 优点 MinGW编译出…

计算机网络-数据通信基础

目录 前言 一、数据通信基本概念 二、数据通信相关知识1 总结 前言 正在学习计算机网络体系&#xff0c;把每日所学的知识梳理出来&#xff0c;既能够当作读书笔记&#xff0c;又能分享出来和大家一同学习讨论。 一、数据通信基本概念 基本概念&#xff1a;信源、信道、信宿&…

第二篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:深度解读pyttsx3支持多种语音引擎

传奇开心果短博文系列 系列短博文目录Python的文本和语音相互转换库技术点案例示例系列 短博文目录前言一、三种语音引擎支持介绍和示例代码二、SAPI5引擎适用场景介绍和示例代码三、nsss引擎适用场景介绍和示例代码四、eSpeak适用场景介绍和示例代码五、归纳总结 系列短博文目…

红队学习笔记Day6 --->干货分享

今天看到这样的一个东西&#xff0c;好好好&#xff0c;有点恐怖&#x1f613;&#x1f613;&#x1f631;&#x1f631;&#x1f631;&#x1f631; 我就想网安是不是也有这种东西&#xff1f; 我来试试 icmp&#xff0c;RDP&#xff0c;arp&#xff0c;dhcp&#xff0c;nat&a…

Eclipse - 查看工程或者文件的磁盘路径

Eclipse - 查看工程或者文件的磁盘路径 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explorer 4.1.0 -> Install2. right-click -> Open in ExplorerReferences 1. Help -> Eclipse Marketplace -> Find: Explorer -> Eclipse Explo…

【Spring MVC篇】参数的传递及json数据传参

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Spring MVC】 本专栏旨在分享学习Spring MVC的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 一、普通参数的传…

【Java多线程】线程中几个常见的属性以及状态

目录 Thread的几个常见属性 1、Id 2、Name名称 3、State状态 4、Priority优先级 5、Daemon后台线程 6、Alive存活 Thread的几个常见属性 1、Id ID 是线程的唯一标识&#xff0c;由系统自动分配&#xff0c;不同线程不会重复。 2、Name名称 用户定义的名称。该名称在各种…

【开源】SpringBoot框架开发服装店库存管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 角色管理模块2.3 服装档案模块2.4 服装入库模块2.5 服装出库模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 角色表3.2.2 服装档案表3.2.3 服装入库表3.2.4 服装出库表 四、系统展示五、核心代码5.…

160基于matlab的负熵和峭度信号的盲分离

基于matlab的负熵和峭度信号的盲分离。基于峭度的FastICA算法的收敛速度要快&#xff0c;迭代次数比基于负熵的FastICA算法少四倍以上。SMSE随信噪比增大两种判据下的FastICA算法都逐渐变小&#xff0c;但是基于峭度的算法的SMSE更小&#xff0c;因此基于峭度的FastICA算法性能…

UVa1359/LA3491 Hills

题目链接 本题是2005年ICPC亚洲区域赛杭州欧赛区的H题 题意 平面上有 n&#xff08;n≤500&#xff09;条线段&#xff0c;其中每条线段的端点都不会在其他线段上。你的任务是数一数有多少个“没有被其他线段切到”的三角形&#xff08;即小山&#xff09;。如下图所示&#x…

VTK Python PyQt 监听键盘 控制 Actor 移动 变色

KeyPressInteractorStyle 在vtk 中有时我们需要监听 键盘或鼠标做一些事&#xff1b; 1. 创建 Actor&#xff1b; Sphere vtk.vtkSphereSource() Sphere.SetRadius(10)mapper vtk.vtkPolyDataMapper() mapper.SetInputConnection(Sphere.GetOutputPort()) actor vtk.vtkAc…