Redis主从模式(一)----搭建主从结构并演示

news2024/10/1 1:20:16

目录

一, 主从模式

1.1 单个Redis服务器可能存在的问题

1.2 单点问题

1.3 什么是主从模式

概念

图示

二, 演示Redis的主从复制

2.1 Redis-server进程

2.2 建立复制

1. 首先将redis.conf配置文件复制一份并修改daemonize 为 yes

2.修改配置文件中的端口号 

3. 分别在两个配置文件中加上主从结构的配置

 2.3 启动进程并查看

1. 分别启动三个Redis-server进程

 2. 查看3个节点的网络情况

3. 查看复制状态

2.3 演示主从复制

1. 从节点读取主节点的数据

2. 从节点不能修改数据

2.4 断开复制 


Redis主从模式(二)---拓扑结构及复制过程:Redis主从模式(二)---拓扑结构及复制过程-CSDN博客

一, 主从模式

1.1 单个Redis服务器可能存在的问题

Redis是一个内存数据库,主要用途是作为缓存存放热点数据从而降低MySQL的压力,大多数用于分布式系统;如果在并发量非常大的情况下,所有的请求都只访问一个Redis服务器的话,Redis服务器很容易发生宕机,从而导致数据丢失或者访问出错的情况,所以单个Redis服务在高并发环境下可能存在的问题有如下:

  • 如果服务器发生了宕机,由于数据恢复是需要点时间的,那么这个期间是无法服务新的请求的;
  • 如果这服务器的硬盘出现了故障,可能数据就都丢失了.

1.2 单点问题

上述单个Redis服务器可能存在的问题我们一般称为单点问题:指某个服务器程序只有一个节点(即只搞一个物理服务器来部署这个服务器程序),所以需要引入分布式系统来解决上述问题,再分布式系统中往往希望有多个服务器来部署Redis系统,从而构成一个Redis集群,此时这个集群给整个分布式系统服务,提供更稳定的/更高效的数据存储功能.

分布式系统中,希望使用多个服务器来部署Redis,存在以下几种Redis的部署方式:

  1. 主从模式(这篇博客详细说明)
  2. 主从模式+哨兵模式(后续讲解)
  3. 集群模式(后续讲解)

1.3 什么是主从模式

概念

主从模式针对于多个Redis节点来说,通常包括一个主节点和多个从节点,从节点的数据和主节点的数据保持一致,同时主节点的数据发生改变会实时更新到从节点,换而言之,从节点就是主节点的副本.

Redis主从模式下,默认名从节点不可以对数据进行修改(也可以在配置文件中修改,一般不修改),只能读取数据.

图示

  1.  从节点的数据是从主节点来的,从节点是主节点的一份副本;
  2. 主节点既支持读操作也支持写操作,但是从节点只能支持读操作;
  3. 正因为从节点支持读操作,从而增大了Redis服务器的并发量(因为Redis服务器的读操作往往远大于写操作).

注意:如果某一时刻从节点挂了,对Redis集群没啥影响,因为此时可以继续从主节点或者其他从节点读取数据,得到的效果完全相同;如果挂掉的主节点,此时这个Redis集群只能提供读操作不能提供写操作了,Redis存储的数据将不会得到更新.

二, 演示Redis的主从复制

2.1 Redis-server进程

配置Redis主从结构,首先需要启动多个服务器,正常来说,每个Redis服务器程序应该放在一个单独的主机上(也就是分布式),但是对于我们来说,只有一个云服务器,所以可以在一个云服务器上运行多个Redis-server进程(这里把每个进程当成一个单独的Redis服务器程序).

如何保证一个云服务器上运行多个Redis-server进程呢?本来的Redis-server默认的端口是6379,此时就需要保证多个Redis-server的端口是不同的,然后在启动每个Redis-server的时候使用不同的端口号进行启动.

2.2 建立复制

假设我们这里打算弄一个主节点两个从节点(主节点的端口号是6379,另外两个从节点的端口号是6380,6381).

配置复制的方式有以下三种:

  1. 在配置⽂件中加⼊ slaveof {masterHost} {masterPort} 随 Redis 启动⽣效(这里演示这种);
  2. 在 redis-server 启动命令时加⼊ --slaveof {masterHost} {masterPort} ⽣效;
  3. 直接使⽤ redis 命令:slaveof {masterHost} {masterPort} ⽣效.

1. 首先将redis.conf配置文件复制一份并修改daemonize 为 yes

2.修改配置文件中的端口号 

           

3. 分别在两个配置文件中加上主从结构的配置

这个配置的意思就是从属于127.0.0.1 6379这个节点(即自己作为该节点的从节点)

 2.3 启动进程并查看

1. 分别启动三个Redis-server进程

启动主节点

 启动从节点

 2. 查看3个节点的网络情况

使用命令 netstat -anp | grep redis-server 进行查看

通过命令可以查看到6个tcp连接,其中上面3个表示3个redis-server服务器连接,下面4个可以分成两组,分别表示每个从节点和主节点之间的tcp连接.

3. 查看复制状态

可以通过命令 info replication 分别查看主节点和从节点的复制状态

2.3 演示主从复制

1. 从节点读取主节点的数据

2. 从节点不能修改数据

2.4 断开复制 

slaveof 命令不但可以建⽴复制,还可以在从节点执⾏ slaveof no one 来断开与主节点复制关系。 例如在 6380 节点上执⾏ slaveof no one 来断开复制.

断开复制的主要流程:

  1. 断开与主节点复制关系
  2. 从节点晋升成主节点

从节点断开复制后并不会抛弃原有的数据,只是无法再获取主节点的数据变化.

 通过 slaveof 命令还可以实现切主操作,将当前从节点的数据源切换到另⼀个主节点。执⾏ slaveof {newMasterIp} {newMasterPort} 命令即可.

切主操作的主要流程:

  1. 断开与旧主节点复制关系
  2. 与新主节点建立复制关系
  3. 删除从节点当前所有数据
  4. 从新主节点进行复制操作

假设把这里端口号为6380的节点的主节点从6379切换到6381:

 此时节点之间的关系如图所示:

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

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

相关文章

力扣每日一题63:不同路径||

题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物…

RK3568平台开发系列讲解(应用篇)串口应用编程之串口介绍

🚀返回专栏总目录 文章目录 一、串口介绍1.1、数据传输方式1.2、数据格式1.3、波特率1.4、硬件流控制和软件流控制1.5、错误检测1.6、串口编程二、串口设备节点介绍沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 串口设备是嵌入式开发中最常用的外设之一,通过串口…

2023年信息科学与工程学院学生科协第一次前端培训

目录 一、前端是什么?前端能做什么?前端需要做什么?现阶段如何理解前端 二、前端学习路线html是什么?css是什么?什么是jshtml、css以及js关系掌握三种语言之后的学习路线 三、HTML基础语法标题段落文本换行文本标签图像…

协程和 C++ Boost库的Coroutine2

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 协程和 C Boost库的Coroutine2 摘要为什么不是boost.coroutine? 线程与协程为什么不介绍C20标准的协程C协程与golang的goroutine 二、使用步骤1.引入库2.核心类单…

作为程序员,很多时候容易急眼,如何缓解?

程序员在工作中面临着高压和快节奏的环境,容易因为紧张的工作节奏、复杂的技术问题或与团队的沟通问题而感到焦虑和急躁。下面提供一些策略来帮助缓解这种情况: 1. 定时休息 遵循“番茄工作法”或其他时间管理技术,每工作25分钟后休息5分钟&…

“第四十九天” 机组

各个硬件的工作原理: 主存储器包括:存储体、MAR、MDR; MAR:存储地址寄存器 ,MAR的位数反映存储单元的个数; MDR : 存储数据存储器,MDR位数等于存储字长; 数据在存储体…

【Opencv】OpenCV使用CMake和MinGW的编译安装出错解决

编译时出现的错误: mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:161: recipe for target ‘all’ failed mingw32-make: *** [all] Error 2解决方法: 根据贴吧老哥的解答,发现是mingw版本有问题导…

合并有序链表C++递归

题目描述 21. 合并两个有序链表 - 力扣(LeetCode) 解题思路 我们这里使用递归的思路来解题: 首先我们要分析题目的子问题在哪,对于这个问题我们先思考如何将两个只有一个节点的有序单链表合并: ①我们可以先判断哪一个…

DCU上如何运行大模型以及用到的docker命令

第一步:需要连接到官方(https://developer.hpccube.com/)提供的vpn 第二步:通过termius进入到项目 第三步:遇到问题 1.docker空间太小了,得换地方:参考这个centos设置docker 目录_mob64ca12f73101的技术博客_51CTO博…

寻找特殊年号

系列文章目录 进阶的卡莎C_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(C…

正点原子嵌入式linux驱动开发——Linux INPUT子系统

按键、鼠标、键盘、触摸屏等都属于输入(input)设备,Linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了input框架,用户只需要负责上报输入事件,比如按键值、坐标等…

python二次开发Solidworks:读取样条曲线数据

目录 1、草图段对象 2、VBA代码分析 3、python代码实现 样条曲线(spline curve)是数学术语,是一种特殊的参数曲线,由一组控制点通过曲线拟合的方式生成。样条一词源于船舶建造中的一种临时性辅助支架,后来被引入计算…

基于卷的磁盘扫描算法设计

1、设计目的 常规情况下,当我们扫描计算机的硬盘时, 通常会使用诸如FindFirstFile/FindNextFile(Windows),或者opendir/readdir(Linux)遍历扫描的目录。 一般情形下,由于文件数量相对较少,文件夹层次低,扫…

Hafnium简介和构建

安全之安全(security)博客目录导读 目录 一、Hafnium简介 二、Hafnium构建 2.1.1 先决条件 2.1.1.1 构建Host 2.1.1.2 工具链 2.1.1.3 依赖 2.1.1.4 获取源码 2.1.2 构建 一、Hafnium简介 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人…

MSVCR100.dll丢失修复方法,MSVCR100.dll丢失的解决方法

今天我要和大家分享的是:msvcr100.dll丢失的6种解决方法。 首先,让我们来了解一下msvcr100.dll丢失的原因。msvcr100.dll是Microsoft Visual C 2010的一个组件,它包含了许多运行库文件,这些文件是许多应用程序所必需的。当msvcr1…

TouchGFX界面开发 | 图像控件应用示例

图像控件应用示例 TouchGFX中的图像会绘制关联图像文件中的像素数据。 使用图像文件前,必须将其导入到项目中。TouchGFX Designer内置了五种类型的图像部件: 固定图像:图像大小是由关联的图像文件定义的,不能在运行时改动。若要将…

物联网AI MicroPython传感器学习 之 GPS户外定位模块

学物联网,来万物简单IoT物联网!! 一、产品简介 HT2828Z3G5L是一款高性能的面向车载组合导航领域的定位G-MOUSE,系统包含同时支持北斗和GPS的高性能卫星接收机芯片。具备全方位功能,能满足专业定位的严格要求。体积小巧…

【数据结构】常见复杂度习题详解 ------ 习题篇

文章目录 📋前言一. ⛳️前篇回顾二. ⛳️常见时间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三4️⃣实例四5️⃣实例五6️⃣实例六7️⃣实例七8️⃣实例八 三. ⛳️常见空间复杂度计算举例1️⃣实例一2️⃣实例二3️⃣实例三 四. ⛳️总结 📋前言 …

GIS 数据结构整理:网格索引

1 一维网格索引 把整个数据库数值空间划分成n*n的正方形网格,建立另一个倒排文件——栅格索引每一个网格在栅格索引中有一个索引条目(记录),在这个记录中登记所有位于或穿过该网格的物体的关键字 1.1 变长指针法 在这个网格的物体,按照序号…

2023年系统设计面试如何破解?进入 FAANG 面试的实战指南

如果您正在准备编码面试,但想知道如何准备关键的系统设计主题,并寻找正确方法、技巧和问题的分步指导,那么您来对地方了。在本文中,我将分享 2023 年系统设计面试的完整指南。 在软件开发领域,如果您正在申请高级工程…