我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis主从复制看这篇就够了

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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 同步部分数据。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis主从复制看这篇就够了

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis主从复制看这篇就够了

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

Redis是什么?看这一篇就够了

本文由葡萄城技术团队编撰并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。引言在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高、交互也较少。而在后来
Redis是什么?看这一篇就够了
2020-08-08

Python中计时,看这一篇就够了

计时对于了解程序的性能是很关键的部分。本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器。一、python2和python3的通用计时方法由于python2和3里面的计时函数是不一样的,建议使用timeit
2023-01-31

Docker Volume的用法看这一篇就够了

Docker卷是一种持久存储机制,允许容器访问主机或容器中的数据。有绑定卷(连接主机目录)和命名卷(独立文件系统)两种类型。使用卷的优点包括数据持久性、共享和灵活性。要创建卷,使用命令"dockervolumecreate<卷名称>",要附加到容器,使用命令"dockerrun-v<卷名称>:<容器路径><镜像名称>"。最佳实践包括优先使用命名卷,避免在同一卷中存储重要和临时数据,并定期清理不需要的卷。
Docker Volume的用法看这一篇就够了
2024-04-02

Git速成教学,从0到1看这篇就足够了

🔥前言 前一阵子做的好多项目存到电脑里头都大了,虽然短时间没有用,但是删了实在可惜,于是我熬夜加班学习了Git的基本使用并快速入门,把项目存放到了远程仓库。随后写下了这篇博客,保证非常之新鲜热乎啊,快来跟我快速入门Git
2023-08-20

MySQL 数据库优化,看这篇就够了

数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷. 1、优化一览图 2、优化 笔者将优化分为了两大类,软优化和硬优化,软优化
MySQL 数据库优化,看这篇就够了
2021-12-10

Java迭代器详解,看这一篇就够了

文章目录 🚩Java 迭代器详解📚迭代器的定义📒认识Iterator✏️类结构图✒️Iterable接口🖍️Iterator接口📃Iterat
2023-08-19

软考那些事儿看这一篇就够了!

  近几年来,各行各业的职业资质考试持续发热,其中,软考的报名人数更是一马当先逐年暴增。说起软考证书,大概还有很多朋友都不大认识,甚至还有这样的疑问:为什么这么多人考软考?软考是什么?今天小希就为大家详细介绍下“软考”,一起来看看吧~  软考的前世今生  计算机软件资格考试(即“软考
软考那些事儿看这一篇就够了!
2024-04-19

Mac zsh: command not found: pyinstaller。[看这一篇就够了]

文章目录 一、问题总结与解决方法。1) pyinstaller版本问题2) 安装后仍然显示command not found2.1) macOS Catalina(10.15) 之前系统。2.2) macOS Catalina(10
2023-08-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录