返回顶部
首页 > 资讯 > 精选 >Redis主从复制看这篇就够了
  • 612
分享到

Redis主从复制看这篇就够了

2023-06-02 21:06:45 612人浏览 泡泡鱼
摘要

什么是主从复制持久化保证了即使 redis 服务重启也会丢失数据,因为 Redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单

什么是主从复制

持久化保证了即使 redis 服务重启也会丢失数据,因为 Redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单点故障,如下图:

Redis主从复制看这篇就够了

 

说明:

  • 主 redis 中的数据有两个副本(replication)即从 redis1 和从 redis2,即使一台 redis 服务器宕机其它两台 redis 服务也可以继续提供服务。

  • 主 redis 中的数据和从 redis 上的数据保持实时同步,当主 redis 写入数据时通过主从复制机制会复制到两个从 redis 服务上。

  • 只有一个主 redis,可以有多个从 redis。

  • 主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求。

  • 一个 redis 可以即是主又是从,如下图:

Redis主从复制看这篇就够了

 

  •  

主从配置

主 redis 配置

无需特殊配置。

从redis配置

修改从 redis 服务器上的 redis.conf 文件,添加 slaveof 主 redisip 主 redis 端口。

Redis主从复制看这篇就够了

 

上边的配置说明当前该从 redis 服务器所对应的主 redis 是192.168.101.3,端口是6379。

主从复制过程

完整复制过程

在 redis2.8 版本之前主从复制过程如下图:

Redis主从复制看这篇就够了

 

复制过程说明:

  1. slave 服务启动,slave 会建立和 master 的连接,发送 sync 命令。

  2. master 启动一个后台进程将数据库快照保存到 RDB 文件中

注意:此时如果生成 RDB 文件过程中存在写数据操作会导致 RDB 文件和当前主 redis 数据不一致,所以此时 master 主进程会开始收集写命令并缓存起来。

  1. master 就发送 RDB 文件给 slave

  2. slave 将文件保存到磁盘上,然后加载到内存恢复

  3. master 把缓存的命令转发给 slave

注意:后续 master 收到的写命令都会通过开始建立的连接发送给 slave。

当 master 和 slave 的连接断开时 slave 可以自动重新建立连接。如果 master 同时收到多个 slave 发来的同步连接命令,只会启动一个进程来写数据库镜像,然后发送给所有 slave。

完整复制的问题:

在 redis2.8 之前从 redis 每次同步都会从主 redis 中复制全部的数据,如果从 redis 是新创建的从主 redis 中复制全部的数据这是没有问题的,但是,如果当从 redis 停止运行,再启动时可能只有少部分数据和主 redis 不同步,此时启动 redis 仍然会从主 redis 复制全部数据,这样的性能肯定没有只复制那一小部分不同步的数据高。

部分复制

Redis主从复制看这篇就够了

 

部分复制说明:

从机连接主机后,会主动发起 PSYNC 命令,从机会提供 master 的 runid(机器标识,随机生成的一个串) 和 offset(数据偏移量,如果offset主从不一致则说明数据不同步),主机验证 runid 和 offset 是否有效,runid 相当于主机身份验证码,用来验证从机上一次连接的主机,如果 runid 验证未通过则,则进行全同步,如果验证通过则说明曾经同步过,根据 offset 同步部分数据。

--结束END--

本文标题: Redis主从复制看这篇就够了

本文链接: https://lsjlt.com/news/231466.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis主从复制看这篇就够了
    什么是主从复制持久化保证了即使 redis 服务重启也会丢失数据,因为 redis 服务重启后会将硬盘上持久化的数据恢复到内存中,但是当 redis 服务器的硬盘损坏了可能会导致数据丢失,如果通过 redis 的主从复制机制就可以避免这种单...
    99+
    2023-06-02
  • Redis是什么?看这一篇就够了
    本文由葡萄城技术团队编撰并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和...
    99+
    2020-08-08
    Redis是什么?看这一篇就够了
  • MySQL看这一篇就够了
    No.1 数据库概念 什么是数据库? 数据库就是一种特殊的文件,内部存储着需要的数据 RDBMS 所谓关系数据库,是建立在关系模型基础的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据 SQL S...
    99+
    2024-04-02
  • Java数组看这篇就够了
    目录一、前言二、数组的定义数组定义的形式:三、数组的初始化方式:1.动态初始化2.静态初始化四、索引访问数组五、数组长度表示六、遍历数组方法一: 方法二:实例演示:七、数组的初始值总...
    99+
    2024-04-02
  • Python:openpyxl这一篇就够了
    各位好,我是轩哥啊哈~ 本文展示如何使用 openpyxl 库在 Python 中使用 Excel 文件。openpyxl 是用于读取和写入 Excel 2010 xlsx / xlsm / xltx / xltm 文件的 Python 库...
    99+
    2023-08-31
    excel python pyqt pygame pip
  • MySQL事务(transaction)看这篇就足够了
    目录mysql事务处理(TransAction)一、事务的四个特性(ACID)【面试常考项】二、事务的分类三、开启事务的步骤四、事务并发时出现的问题五、事务的隔离级别总结MySQL事务处理(TransAction) 思考...
    99+
    2024-04-02
  • Python中计时,看这一篇就够了
    计时对于了解程序的性能是很关键的部分。 本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器。 一、python2和python3的通用计时方法 由于python2和3里面的计时函数是不一样的,建议使用ti...
    99+
    2023-01-31
    这一 就够了 Python
  • Python eval() 函数看这一篇就够了
    目录一、语法和参数二、expression参数示例三、globals参数示例四、locals参数示例五、eval函数的危险之处六、eval()函数官方文档附eval()函数常见作用有...
    99+
    2024-04-02
  • java多线程从入门到精通看这篇就够了
    目录一.认识线程及线程的创建1.线程的概念2.线程的特性3.线程的创建方式<1>继承Thread类<2>实现Runnable接口<3>实现Call...
    99+
    2024-04-02
  • Git速成教学,从0到1看这篇就足够了
    🔥前言 前一阵子做的好多项目存到电脑里头都大了,虽然短时间没有用,但是删了实在可惜,于是我熬夜加班学习了Git的基本使用并快速入门,把项目存放到了远程仓库。随后写下了这篇博客,保证非常之新鲜热乎啊,快来跟我快速入门Git...
    99+
    2023-08-20
    git 服务器 gitee
  • MySQL 数据库优化,看这篇就够了
    数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1、优化一览图 2、优化 笔者将优化...
    99+
    2021-12-10
    MySQL 数据库优化,看这篇就够了
  • Mybatis配置解析看这一篇就够了
    目录核心配置文件environments元素mappers元素Mapper文件Properties优化typeAliases优化生命周期和作用域总结核心配置文件 mybat...
    99+
    2024-04-02
  • C++内存管理看这一篇就够了
    目录1 内存分布图2 C语言和C++内存分配实现2.1 C语言实现2.2 C++实现new的原理delete的原理3 C语言和C++内存管理区别4 内存泄漏总结1 内存分布图 注...
    99+
    2024-04-02
  • ES学习看这一篇文章就够了
    第一章 ES简介 第1节 ES介绍 1234 1、Elasticsearch是一个基于Lucene的搜索服务器2、提供了一个分布式的全文搜索引擎,基于restful web接口3、Elasticsearch是用Java语言开发的,基于A...
    99+
    2023-09-01
    elasticsearch 大数据 学习 java
  • Java集合面试题看这篇就够了
    备战实习,会定期的总结常考的面试题,大家一起加油! 🎯 往期文章: 【面试题】计算机网络篇-10道常见面试题p1【面试题】JVM篇-10道常见面试题p1【面试题】Java并发篇-...
    99+
    2023-08-31
    java 面试 经验分享 集合
  • Java学习路线图,看这一篇就够了!
    主要分为三阶段 | 耗废1024根秀发,Java学习路线图来了,整合了自己所学的所有技术整理出来的2022最新版Java学习路线图,适合于初、中级别的Java程序员。可以按照这个序号来学习的,或者把知识过一遍,建议收藏。 阶段一:Java...
    99+
    2023-08-31
    java spring 后端 maven servlet
  • Wireshark 的抓包和分析,看这篇就够了!
    WireShark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。在网络封包和流量分析领域有着十分强大功能的工具...
    99+
    2023-10-20
    wireshark 测试工具 网络 职场和发展 自动化测试 软件测试 程序人生
  • Python 函数式编程,看这一篇就够了!
    本文对 Python 中的函数式编程技术进行了简单的入门介绍。头等函数在 Python 中,函数是「头等公民」(first-class)。也就是说,函数与其他数据类型(如 int)处于平等地位。因而,我们可以将函数赋值给变量,也可以将其作为...
    99+
    2023-05-14
    Python 函数式编程
  • 【C++】Cmake使用教程(看这一篇就够了)
    文章目录 引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看 三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运...
    99+
    2023-08-16
    c++ linux java CMakeLists
  • Java迭代器详解,看这一篇就够了
    文章目录 🚩Java 迭代器详解📚迭代器的定义📒认识Iterator✏️类结构图✒️Iterable接口🖍️Iterator接口📃Iterat...
    99+
    2023-08-19
    java 开发语言 后端
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作