redis复制机制

news2024/11/24 9:53:33

文章目录

  • 1. Redis 复制机制
  • 2. 基本命令
  • 3. 修改配置文件
  • 4. 代码案例
    • 4.1 一主二仆
    • 4.2 薪火相传
    • 4.3 反客为主
  • 5. Redis复制工作流程
  • 6. Redis 复制的缺点

1. Redis 复制机制


概念 :

在这里插入图片描述


Redis 复制机制 能干的活 :

  1. 读写分离 : 写 就找 主机 master , 读就找从机 Slave
  2. 容灾恢复 : 主机突然宕机 , 我们可以通过从机将数据恢复
  3. 数据备份
  4. 水平扩容支撑高并发

2. 基本命令


这里我们想要玩转 Redis复制 ,需要配置从机 .


注意 :只需要配置 从库 ,不需要配置主库


配置两台从机大致图 :

在这里插入图片描述


关于如何配置 等下代码案例的时候会一步一步的配置 ,这里先来看看 Redis 复制的基本命令.

在这里插入图片描述

3. 修改配置文件


说明 :

在这里插入图片描述


配置文件


图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


图三 :

在这里插入图片描述


注意 : 上面拷贝的 6380 ,和 6381 对应的日志文件并没有修改 ,下面来修改一下.

在这里插入图片描述


另外 : 端口号也需要更改一下

在这里插入图片描述

4. 代码案例

4.1 一主二仆

启动 三台机器 :

在这里插入图片描述

启动完后 ,我们可以 来看看 主机 和 从机的 日志文件

在这里插入图片描述

日志看完 , 就来 使用我们的第一个命令 info replication 查看 复制节点的主从关系和配置信息.

在这里插入图片描述


下面我们来 在主机上 创建几个数据 看看 从机是否能够获取到创建的数据

在这里插入图片描述


到此 一主二仆 相关的配置与操作就完成了,下面我们来看几个问题 .


1. 从机可以执行写命令吗 ?


答案 : 不能

在这里插入图片描述


2.从机切入点问题

在这里插入图片描述


3. 主机 shutdown 后 , 从机会上位吗 ?


答案 : 从机不会上文 ,而是原地待命,等待主机重启归来

在这里插入图片描述


图二 :

在这里插入图片描述



看完这三个问题, 下面我们来看第二个命令 : slaveof


slaveof 主机 IP 主机端口号 : 这个命令是 用来设置 从属关系的 ,


上面我们是通过 配置文件中的 replicaof 固定写死了 要跟随的主机 , 下面我们就通过 slaveof 来指定要跟随的主机 .


注意 : 通过 slaveof 配置的从属关系 ,会在宕机 或某种意外 使 从机 与 主机 master 断开之后 ,自动取消从属关系 . 如果要继续维持 从属关系 需要 在执行一遍 slaveof 命令.

图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


图三 :

在这里插入图片描述

4.2 薪火相传


啥是薪火相传呢 ?


图一 :

在这里插入图片描述

图二 :

在这里插入图片描述


图三 :

在这里插入图片描述


下面提出一个问题 : slave1 相当于 slave2 的 主机, 那么 slave 1 是能够进行写操作呢 ?

在这里插入图片描述

4.3 反客为主


简单一句话 就是 :老子不干了 , 我不当小弟了, 我要当大哥 .


通过 slaveof no one 命令 , 使当前数据库停止与其他数据库的同步, 转变为 主机 master.

在这里插入图片描述

5. Redis复制工作流程


在这里插入图片描述

6. Redis 复制的缺点

  1. 复制延时 , 信号衰弱

    在这里插入图片描述


2. master 挂了 ,会导致无法进行写操作 . 从机 slave 只能进行读操作 , master 挂了之后 会一直等待 主机重新上线.


针对 从机 在 主机挂了之后 ,一直等待 主机上线 这个 行为 ,就引出我们接下来要学习的 Redis 哨兵 .

简单说一下为啥需要哨兵 , 因为 主机挂了,我们不可能一直让 从机等待 ,所以需要在从机中选一个机器让它当主机,但是从机在默认情况

下是不会自动重新选一个 主机的 ,此时就需要一个 人 来从 从机中选出一个 主机 选一个老大, 所以 哨兵就应运而生.

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

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

相关文章

Centos7离线安装Docker

在我们部署Docker镜像时,难免会遇到服务器没有网络情况,这时候我们就需要离线安装Docker 参考文档:https://docs.docker.com/engine/install/binaries 下载Docker安装包 下载地址:https://download.docker.com/linux/static/st…

玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数

一、前言 使用gtest编写的测试案例通常本身就是一个可执行文件,因此运行起来非常方便。同时,gtest也为我们提供了一系列的运行参数(环境变量、命令行参数或代码里指定),使得我们可以对案例的执行进行一些有效的控制。…

OpenCL编程指南-4.3类型转换

隐式类型转换 隐式类型转换是一种自动的类型转换,只要混合使用不同的类型,编译器就会完成这种隐式类型转换。这里支持表4-1中定义的标量类型(除void、double和half以外)的隐式转换。完成隐式转换时,并不只是重新解释一…

c/c++中的数据内存分布

c/c中的数据内存分布 1. C/C内存分布2. C语言中动态内存管理方式3. C中动态内存管理4. operator new与operator delete函数5. new和delete的实现原理6. malloc/free和new/delete的区别7.内存泄漏**什么是内存泄漏,内存泄漏的危害****内存泄漏分类(了解&a…

练习时长两年半的扫雷

目录 设计思路 游戏运行效果 函数的声明 头文件game.h 游戏主体(源文件) 1.game.c 2.test.c 各文件的阐述 各部分设计心得 1.打印菜单 2.初始化雷池 3.打印雷池以及玩家界面 打印效果 如何改变雷的数量与雷池大小 4.生成随机雷 5.排雷与对局判断 对于越界的看法 设计…

Pruning 系列 (五)Dropout、Dropconnect剪枝

环境 python 3.9numpy 1.24.1pytorch 2.0.0+cu117一、Dropout dropout在全连接层使用。 假设丢弃概率是P,有两种实现方式,不管是在《测试阶段》还是《训练阶段》对每层的输出做缩放,都是为了保持伯努利分布的期望np。《测试阶段》没dropout 而是全量神经元参与运算,不然预…

JAVA8的新特性——lambda表达式

JAVA8的新特性——lambda表达式 此处,我们首先对于Java8的一些特性作为一个简单介绍 Java 8是Java编程语言的一个重要版本,于2014年发布。Java 8引入了许多新特性和改进,以提高开发效率和性能。以下是Java 8的一些主要新特性: Lam…

Liunx基础命令 - pwd命令

pwd命令 – 显示当前工作目录的路径 ​ pwd 命令来自英文词组“print working directory”的缩写,其功能是用于显示当前工作目录的路径,即显示所在位置的绝对路径。在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路…

【Android】Exam5 ListView组件简单应用

Exam5 ListView组件简单应用 ListView组件简单应用 Exam5 ListView组件简单应用目的实验内容及实验步骤采用SimpleAdapter自定义Adapter运行及结果:实验总结 目的 掌握常用的UI布局及组件; 掌握使用Intent启动Activity的方法 掌握ListView组件的简单应用…

什么是微服务中的熔断器设计模式?

在本文中,我将解释什么是熔断器设计模式以及它解决了什么问题。 我们将仔细研究熔断器设计模式,并探讨如何使用Spring Cloud Netflix Hystrix在Java中实现它。到本文结束时,您将更好地了解如何使用熔断器设计模式提高微服务架构的弹性。 熔断…

创建基于oracle jdk8的自定义docker镜像

创建基于oracle jdk8的自定义docker镜像 1:查看服务器java版本: 如果服务器的版本是open-jdk,则进行如下操作 拷贝相关jdk压缩包(.tar.gz后缀)到服务器目录(例:/usr/local) 解压:…

Liunx基础命令 - ls命令

ls命令 – 显示目录中文件及其属性信息 ls命令来自英文单词”list“的缩写,中文译为“列出”,其功能是用于显示目录中文件及其属性信息,是最常被使用到的Linux命令之一。 默认不添加任何参数的情况下,ls命令会列出当前工作目录中的…

Servlet编程---Day 04

一、HttpServletRequest (请求对象) (一)HttpServletRequest对象 HttpServletRequest对象是 tomcat 为我们封装的对象 HttpServletRequest是 ServletRequest 接口的子接口 , 专门做 http 协议的请求对象 (二)常用方法 //设置…

Python3: 扫描库文件并获取版本号信息

文章目录 1. 目的2. 原理Linux: strings 命令Windows: strings 命令 3. 基于 Python 实现 strings 命令4. 基于Python的版本号查找5. 最终调用:一句话使用 1. 目的 在 C/C 开发中使用了第三方库,具体说是 .a, .lib, .dll 等文件,想通过 Pyth…

C++: 通过CMake配置AddressSanitizer并执行内存泄漏和越界检查

文章目录 1. 目的2. 区分编译和链接选项3. 在CMake中全局开启ASan1. 目的 在 C/C++ 工程中, 得益于 Google 工程师开发的 Address Sanitizer 这一神器, 可以快速、准确的发现不规范的内存使用, 包括而不限于: 内存泄漏检查, 例如忘记释放, 或原本持有内存的的指针被赋予…

[230522] 托福阅读词汇题 |持续更新|5月15日

infiniteimmensevast breakthroughdiscovery pivotalessential perceivedapparent 明显的 statutorilylegally 法律上 triggerprompt 引发 adolescentyouthful 青少年的 theorizedproposed 提出 replenishrenew 补充 prospersucceed pursueresearch signalindicate …

WPF MaterialDesign 初学项目实战(4)侧边栏路由管理

原视频内容 WPF项目实战合集(2022终结版) 24P 其他内容 WPF MaterialDesign 初学项目实战(0):github 项目Demo运行 WPF MaterialDesign 初学项目实战(1)首页搭建 WPF MaterialDesign 初学项目实战(2)首…

ESLint配置详解

ESLint配置详解 ESLint 是一个代码检查工具,用来检查代码是否符合指定的规范,防止在多人协作开发时代码格式不统一。 安装 全局安装 npm install eslint -g当前项目安装 npm install eslint -D安装之后运行eslint --init进行初始化,使用…

你真的理解分布式数据的分区吗?

分布式数据存储是指将数据分散存储在多个节点或服务器上的技术。而分区是将数据划分为逻辑上的片段或部分,每个分区可以在分布式系统中的不同节点上存储。分区主要是为了可扩展性。不同的分区可以放在不共享集群中的不同节点上,可以帮助实现负载均衡、高…

玩转Google开源C++单元测试框架Google Test系列(gtest)之四 - 参数化

一、前言 在设计测试案例时,经常需要考虑给被测函数传入不同的值的情况。我们之前的做法通常是写一个通用方法,然后编写在测试案例调用它。即使使用了通用方法,这样的工作也是有很多重复性的,程序员都懒,都希望能够少…