redis高可用-主从同步

news2024/11/27 9:31:58

目录

一:背景

二:实现方式

三:实际使用

一:背景

上一节我们介绍了centos下redis下的安装配置,是在单台服务器部署一个redis服务,这种模式是单机模式下使用的,如果出现服务故障,redis服务就会出现不可用。那么怎么保证redis服务高可用,在单机节点挂掉的情况下,实现服务的可持续。下面我们介绍下redis的同步机制,可以实现一主多从,主服务挂掉,可以手动切换从服务为主服务继续服务。

二:实现方式

1:配置

实现redis的一主多从配置很简单,只需要修改redis的配置文件。

这里我们以三台redis实例为例,介绍下主从同步机制。

实例1:为主redis实例,所有的写操作在该实例进行,需要配置远程访问

实例2:为从服务,只能进行读操作,需要配置主实例的地址和访问密码

实例3:为从服务,只能进行读操作,需要配置主实例的地址和访问密码

实例1配置:

# 启用保护模式,允许远程访问
protected-mode no

bind 0.0.0.0

实例2配置:

配置ip和端口
replicaof 192.168.56.101 6379

其中192.168.56.101为主实例的地址

配置访问密码:

masterauth "123456"

实例3配置:

配置ip和端口
replicaof 192.168.56.101 6379

其中192.168.56.101为主实例的地址

配置访问密码:

masterauth "123456"

配置完需要重启实例1和实例2的服务

我们看到日志如下:

我们的从实例已经成功连接并且同步数据

2:数据同步

(1)我们在主实例添加数据,添加以后发现从服务两个实例都已经存在相同的数据,同理我们在实例1中删除数据,发现实例2和3也同步删除。

(2)从库1断线,在主库写入数据,从库1重新连接

主库写入数据:增加一个,删除一个

从库重新连接:

我们从日志可以看到,尝试部分重新同步,可见只进行了增量复制

同时可以可以看到同步成功的数据

3:同步原理

(1)主从同步配置开启以后,所有写操作只会在主库进行,读操作基本会在从库进行,主从保持数据的一致性,主库有了数据更新以后会立即同步给从库。

(2)redis主从同步配置以后,首次同步采用全量复制,从库会从头复制主库的数据,主从同步以后,从库读取主库的缓冲区进行增量复制

(3)从库发生故障,重启以后重新连接,会采用增量复制或者全量同步

4:发生全量同步条件

第一次同步或者offset超出了挤压缓冲区的范围:

5: 同步过程
  1)从服务器连接主服务器,发送SYNC命令; 
  2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 
  3)主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 
  4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照(快照文件先接收保存到磁盘,最后加载到内存中); 
  5)主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令; 
  6)从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
 

三:实际使用

在实际的使用中,我们可以使用redis的主从同步实现以下功能:

1:故障的快速切换和恢复

2:读写分离,实现流量削峰

3:提供高可用

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

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

相关文章

Spring AI 调用 openAI 进行语音识别

Spring AI支持语音识别功能,目前仅支持OpenAI的Transcription模型。 项目搭建: 参考 Spring AI 介绍以及与 Spring Boot 项目整合 源码示例: RestController RequestMapping("/openai") public class OpenAiIAudioTranscriptionC…

幂集000

题目链接 幂集 题目描述 注意点 集合中不包含重复的元素 解答思路 可以使用深度优先遍历的思想按顺序将相应的元素添加到子集中&#xff0c;并将每个子集添加到结果集 代码 class Solution {public List<List<Integer>> subsets(int[] nums) {List<List&…

VirtualBox虚拟机下安装Ubuntu24.04操作系统

目录 0 背景1 虚拟机的安装1.1 下载安装包1.2 走安装向导 2 操作系统的安装2.1 下载光盘镜像文件2.2 安装操作系统到虚拟机上 3 基本配置3.1 网络连接方式3.2 共享文件夹3.3 设置显存大小 0 背景 首先说说Ubuntu系统&#xff0c;或者更普遍一点&#xff0c;Linux系统究竟有什么…

Java项目学习(员工管理)

新增、员工列表、编辑员工整体代码流程与登录基本一致。 1、新增员工 RestController RequestMapping("/admin/employee")EmployeeController 类中使用了注解 RestController 用于构建 RESTful 风格的 API&#xff0c;其中每个方法的返回值会直接序列化为 JSON 或…

Mirillis Action v4 解锁版安装教程(专业高清屏幕录像软件)

前言 Mirillis Action!&#xff08;暗神屏幕录制软件&#xff09;专业高清屏幕录像软件&#xff0c;被誉为游戏视频三大神器之一。这款屏幕录制软件和游戏录制软件&#xff0c;拥有三大硬件加速技术&#xff0c;支持以超高清视频画质录制桌面和实况直播&#xff0c;超清视频画…

90 Realistic Arctic Environment Textures snow(90+种逼真的北极环境纹理--雪、冰及更多)

一组90多个逼真的雪、冰、雪地岩石和其他被雪覆盖的地面纹理,供在雪地环境中使用。每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准的Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。…

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代&#xff0c;数据已成为企业和应用不可或缺的核心&#xff0c;而数据库不仅是数据的仓库&#xff0c;更是支撑业务决策、系统运行的基石。对于求职者而言&#xff0c;掌握数据库知识已成为求职市场上的必考…

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(二)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

基于AT32_Work_Bench配置AT32工程

基于AT32_Work_Bench配置AT32工程 ✨AT32_Work_Bench工具是用来给AT32 MCU快速构建外设初始化工程软件&#xff0c;类似STM32的STM32CubeMX工具软件。 &#x1f4cd;AT32 TOOL系列工具下载地址&#xff1a;https://www.arterytek.com/cn/support/index.jsp?index4&#x1f3f7…

递归乘法00

题目链接 递归乘法 题目描述 注意点 保证乘法范围不会溢出 解答思路 使用加法代替乘法&#xff0c;递归计算A * B&#xff0c;每个递归的过程加上一个A&#xff0c;且对B减1&#xff0c;直到B为0为止 代码 class Solution {public int multiply(int A, int B) {if (B 0…

初学51单片机之数字秒表

不同数据类型间的相互转换 在C语言中&#xff0c;不同数据类型之间是可以混合运算的。当表达式中的数据类型不一致时&#xff0c;首先转换为同一类型&#xff0c;然后再进行计算。C语言有两种方式实现类型转换。一是自动类型转换&#xff0c;另外一种是强制类型转换。 转换的主…

哈尔滨等保的定级备案

哈尔滨等保的定级备案是确保信息安全&#xff0c;保障国家和人民利益的重要措施。在当前信息化社会&#xff0c;信息安全已成为国家发展的重要支撑&#xff0c;哈尔滨等保的定级备案工作显得尤为关键。本文将从哈尔滨等保定级备案的背景、定级标准、备案流程、实施意义等方面进…

ubuntu安装qtcreator与环境配置

sudo apt-get update sudo apt-get install gcc g # 两个编译器 sudo apt-get install build-essential # 编译c/c所需要的软件包 sudo apt-get install libgl1-mesa-dev # 安装mesa&#xff0c;Mesa 实际上是一个库&#xff0c;它实现了多种图形 API 规范 sudo apt-get insta…

快排(前后指针实现)

前言 快排解决办法有很多种&#xff0c;这里我再拿出来一种前后指针版本 虽然这个版本的时间复杂度和霍尔一样&#xff0c;逻辑也差不多&#xff0c;但是实际排序过程&#xff0c;确实会比霍尔慢一点 快排gif 快排前后指针实现逻辑&#xff1a; 前后指针实现逻辑(升序):单趟排序…

双写一致性

双写一致性 当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 注意这里是对数据库进行写操作而不是读操作&#xff0c;通常我们有两种方式完成这个写操作&#xff0c;分别是&#xff1a;先删除缓存再修改数据库 和 先修改数据库再删除…

视觉与运动控制1

机器视觉与运动控制 机器视觉的应用 机器视觉是计算机视觉的一个分支&#xff0c;工业自动化领域中的视觉控制或视觉应用&#xff0c;主要指的是通过前端光学摄像头&#xff0c;从采集到的数字化图像中提取相关信息&#xff0c;进行分析处理之后&#xff0c;用于对生产线流程…

编译xlnt开源库源码, 使用c++读写excel文件

编译xlnt开源库源码,在linux平台使用c读写excel文件 下载xnlt源码 官方网站https://tfussell.gitbooks.io/xlnt/content/ 下载地址https://github.com/tfussell/xlnt 下载libstudxml开源库源码 下载地址https://github.com/kamxgal/libstudxml 下载xnlt源码 官方网站https://…

AI网络爬虫:用deepseek提取百度文心一言的智能体数据

真实网址&#xff1a;https://agents.baidu.com/lingjing/experhub/search/list?pageSize36&pageNo1&tagId-99 返回的json数据&#xff1a;{ "errno": 0, "msg": "success", "data": { "total": 36, "p…

【动态规划】路径问题 {二维动态规划;选择合适的状态表示方法;创建虚拟节点}

一、经验总结 选择合适的状态表示方法 一般的&#xff0c;状态表示的方法有两种&#xff1a; 以[i, j]位置为终点&#xff0c;正向填表&#xff1b;用之前的状态推导出dp[i][j]的值&#xff08;从哪里来&#xff09;&#xff1b;以[i, j]位置为起点&#xff0c;反向填表&…

Spring Boot组件化与参数校验

Spring Boot组件化与参数校验 Spring Boot版本选择 2.3.x版本 2.6.x版本 Spring Boot核心思想 约定大于配置&#xff0c;简化繁琐的配置 Spring Boot自动配置原理 SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类&#xff0c;Spr…