【Redis 开发】详细搭建Redis主从,并了解数据同步原理

news2024/11/25 18:54:45

Redis主从搭建

  • Redis主从
    • 搭建Redis的主从架构
    • 数据全同步原理
    • 数据的增量同步
      • 优化Redis主从集群

Redis主从

搭建Redis的主从架构

主从节点可以实现读写分离,将都大量的读操作分担与诸多从节点当中去
在这里插入图片描述
从节点可以叫做slave或者replica

如何搭建:

在一台Linux虚拟机上开启三个Redis实例,端口不同

  1. 首先在/tmp目录下创建三个目录对应三个不同的端口,这里创建7001,7002,7003
  2. 将之前的redis下载目录下的redis.conf文件分别拷贝到上述创建的三个目录中

拷贝可以使用命令:echo 7001 7002 7003 | xargs -t -n 1 cp redis-7.0.15/redis.conf进行拷贝也可以使用cp命令

  1. 执行命令sed -i -e 's/6379/7001/g' -e 's/dir .\//dir \/tmp\/7001\//g' 7001/redis.conf修改每个文件夹的配置文件,将端口分别修改为7001,7002,7003,将RDB文件保存位置都修改为自己所在目录(在/tmp文件中执行该命令)
  2. 修改每个实例的声明ip,为每个配置文件中指定每一个实例的绑定ip信息

在配置文件中插入replica-announce-ip 192.168.75.135
或者在命令行执行sed -i '1a replica-announce-ip 192.168.75.135' 7001/redis.conf
三个文件都使用该命令进行一遍配置
或者三个命令一键修改printf '%s\n' 7001 7002 7003 | xargs -I{} -t sed -i 'la replica-announce-ip 192.168.150.101' {}/redis.conf

  1. 配置三个节点的主从关系通过replicaof或者slaveof来实现
  • 设置主从关系

永久生效的主从关系:
在redis.conf中添加一行配置:slaveof <masterip> <masterport>
临时生效的主从关系:
在cli客户端使用命令slaveof <masterip> <masterport>(重启后失效)
redis-cli -p 7002:连接7002
slaveof 192.168.75.135 7001

数据全同步原理

在这里插入图片描述
其中repl_baklog:是一个缓冲区

  • master如何判断slave是不是第一次来同步数据
  1. Replication id:数据集的标识,id一致则说明是同一数据集,每一个master都有唯一的id,slave则会继承master节点的id
  2. Offset:偏移量,随着记录在repl_baklog中的数据增多而逐渐增大,slave完成同步也会记录当前的offset,如果offset小于master的offset,则说明需要更新

通过传过来的id进行判断,如果id不同则证明是第一次传输

数据的增量同步

主从第一次同步是全量同步,但是如果slave重启后同步,则执行增量同步
在这里插入图片描述
slave返回的offset中记录了返回来的在backlog中读取到了哪里,baklog将后边的数据返回
注意:repl_baklog中的存储是进行环形存储的,slave与master一直在环形存储内进行增量同步

这个时候如果redis从节点宕机当他醒过来之后,master已经转了一圈了上一圈的数据被覆盖掉,slave就只能进行全量同步了

优化Redis主从集群

  1. 在master中配置repl_diskless_sync yes 启用无磁盘复制,避免全量同步时的磁盘IO
  2. Redis单节点上的内存占用不要太大,减少RDB导致过多磁盘IO
  3. 适当提高repl_baklog的大小,发现slave宕机时尽快实现故障恢复,尽可能避免全量同步
  4. 限制一个master上的slave节点数量,如果实在太多slave,则可以采用主-从-从链式结构,减少master压力

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

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

相关文章

LeetCode 104.二叉树的最大深度

题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root [1,null,…

20240425在Ubuntu20.04下检测HDD机械硬盘

20240425在Ubuntu20.04下检测HDD机械硬盘 2024/4/25 14:28 百度&#xff1a;免费 HDD 机械硬盘坏道检测 ubuntu HDD机械硬盘 坏道检测 https://blog.csdn.net/anny0001/article/details/136001767 ubuntu 坏道扫描 Mystery_zero 已于 2024-02-02 22:20:46 修改badblocks -b 819…

yo!这里是网络入门初识

目录 前言 基本概念 网络 协议 地址 网络传输流程 OSI七层模型 TCP/IP四层&#xff08;五层&#xff09;模型 流程图 数据封装&&分用 后记 前言 对于上一个专栏——Linux操作系统&#xff0c;我们学习了操作系统的基础知识以及基本的系统编程&#xff0c;其…

企业计算机服务器中了mkp勒索病毒如何解密,mkp勒索病毒解密工具

随着网络技术在企业中的不断应用&#xff0c;越来越多的企业离不开网络&#xff0c;通过网络数字化办公模式&#xff0c;可以为企业提高生产运营效率&#xff0c;大大提高了企业发展水平&#xff0c;但网络是一把双刃剑&#xff0c;在为企业提供便利的同时&#xff0c;也为企业…

Opencv | 直方图

这里写目录标题 一. 直方图方法1方法2方法3 二. 掩码区域的直方图绘制三. 直方图均衡化 一. 直方图 方法1 cv.calcHist(images, channels, mask, histSize, rangesNone, accumulateFalse)参数:images: 输入图像&#xff0c;可以是单个图像或图像的列表channels: 计算直方图的通…

Meta-Llama-3-8B-Instruct本地推理

Meta-Llama-3-8B-Instruct 本地推理 基础环境信息&#xff08;wsl2安装Ubuntu22.04 miniconda&#xff09; 使用miniconda搭建环境 (base) :~$ conda create --name pytorch212 python3.10 Retrieving notices: ...working... done Channels:- defaults Platform: linux-64 C…

清新优雅、功能强大的后台管理模板 | 开源日报 No.238

soybeanjs/soybean-admin Stars: 7.0k License: MIT soybean-admin 是一个基于 Vue3、Vite5、TypeScript、Pinia、NaiveUI 和 UnoCSS 的清新优雅且功能强大的后台管理模板。 使用最新流行的技术栈&#xff0c;如 Vue3、Vite5 和 TypeScript。采用清晰的项目架构&#xff0c;易…

SRAM控制原理与读写实例

本文对SRAM进行介绍&#xff0c;并对其内部的存储器矩阵、地址译码器、列I/O及I/O数据电路、控制电路、SRAM的读写流程进行简要介绍&#xff0c;并给出SRAM IS62LV256-45U读写实例。 文章目录 存储容量的计算SRAM控制原理SRAM信号线存储器矩阵地址译码器、列I/O及I/O数据电路控…

开发总结-Dao层(Mapper层)

Mybatis-plus新用法 VehicleBO one vehicleService.getOne(Wrappers.<VehicleBO>lambdaQuery().eq(VehicleBO::getVin, reqVo.getVin()));boolean b bizAccountApplyService.remove(Wrappers.<BizAccountApplyBO>lambdaQuery().eq(BizAccountApplyBO::getId, 14…

工业级PDA手持机,信息时代的便捷工具

在当今信息快速发展的时代&#xff0c;各种先进技术不断涌现&#xff0c;为各个行业带来了巨大的变革和提升。工业级 PDA 手持机作为一种集多种功能于一身的便捷工具&#xff0c;正逐渐成为工业领域中不可或缺的一部分。 工业级 PDA 手持机是一种专门为工业应用设计的便携式数据…

提升编码技能:学习如何使用 C# 和 Fizzler 获取特价机票

引言 五一假期作为中国的传统节日&#xff0c;也是旅游热门的时段之一&#xff0c;特价机票往往成为人们关注的焦点。在这个数字化时代&#xff0c;利用爬虫技术获取特价机票信息已成为一种常见的策略。通过结合C#和Fizzler库&#xff0c;我们可以更加高效地实现这一目标&…

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现

基于STM32单片机的汽车胎压、速度及状态监测系统设计与实现 摘要&#xff1a; 随着汽车电子技术的快速发展&#xff0c;车辆状态实时监控系统的需求日益增长。本文设计并实现了一种基于STM32单片机的汽车胎压、速度及状态监测系统。该系统能够实时监测汽车的胎压、速度以及其他…

Three.js杂记(十三)—— 包围盒

好久没有学习three.js了&#xff0c;现在再重新巩固并深入学习。荒废学习一年多了&#xff0c;希望现在为时未晚&#x1f4aa; 包围盒 包围盒按照字面理解就是包围一个物体的盒子&#xff0c;那就是一个长方形空间。 一般来说&#xff0c;包围盒可以用于&#xff1a; 物体之…

Redis__数据类型

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__数据类型 ⏱️ 创作时间&#xff1a;2024年04月28日 ———————————————— 这里写目录标题 文…

Git零基础

Git工作流程图 操作指令 分支 、 指令总结 远程仓库

[C++] 类和对象 _ 剖析构造、析构与拷贝

一、构造函数 构造函数是特殊的成员函数&#xff0c;它在创建对象时自动调用。其主要作用是初始化对象的成员变量&#xff08;不是开辟空间&#xff09;。构造函数的名字必须与类名相同&#xff0c;且没有返回类型&#xff08;即使是void也不行&#xff09;。 在C中&#xff0…

222.完全二叉树的节点个数

题目链接 题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最…

vue2—— mixin 超级详细!!!

mixin Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类 Mixin类通常作为功能模块使用&#xff0c;在需要该功能时“混入”&#xff0c;有利于代码复用又避免了多继承的复杂 vue中的mixin 先来看一下官方定义 mi…

【麒麟(Linux)系统远程连接到windows系统并进行文件传输】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言使用步骤总结 前言 一般来说&#xff0c;windows自带远程桌面&#xff0c;使用的RDP协议&#xff0c;Linux上支持RDP协议的软件很多&#xff0c;常用的是Remmi…

基于决策树的DDoS攻击检测与防护系统研究---实验/论文

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…