当前位置: 首页 > article >正文

Redis主从复制实现原理

  • Redis 主节点负责写数据,但也有读的权限,redis的从节点只能读。
  • 数据发布到Master节点后,Master节点再把数据同步到slave节点。

  • 实现原理:
    • sync阶段(数据同步)步骤1,2,3,Slave启动会发送sync指令给Master
    • command propagate阶段(指令传输)2.1,4 , 5
    • 注意:BGSAVE不会阻塞线程,Master依然可以进行写数据,此时数据会把指令写到缓冲区。

  • 但是,如果是网络抖动等情况,从节点恢复也要走上面这套逻辑,显然太过浪费资源。从redis2.8之后,引入了Psync指令代替Sync。Psync会确定要执行全量同步还是部分同步
    • 全量同步:从节点第一次和主节点建立连接,就会执行sync+command propagate
    • 部分同步:从节点的复制偏移量无法在复制积压缓冲区中找到
    • 注意:如何知道从节点是第一次连接?
      • Redis在启动的时候会生成一个redis id。
      • 当Master节点和Slave节点第一次连接时,会把redis启动生成的redis id 发给Slave节点,slave节点会对其进行保存。
      • 主从之间发生中断重连的时候,Slave节点会把保存redis id发送给Master节点。
      • Master节点会判断Slave发过来的id和自己当前的redis id是否一致,一样就说明之前连接过,否则就是第一次连接。
  • Psync: 2.8版本后,
    • psync会根据从节点的复制偏移量offset,通过心跳发送给主节点,
    • 根据从节点的复制偏移量在主节点找到丢失的数据,
    • 如果主节点的复制积压缓冲区(默认1M)能找到丢失的那部分数据,就执行部分重同步,否则全量重同步.


http://www.kler.cn/news/359653.html

相关文章:

  • 汽车行业焕新潮流涌动,联众优车以优质服务响应市场变化
  • vue前端开发框架的常见知识点和应用
  • 【wpf】08 xml文件的存取操作
  • Imagic: Text-Based Real Image Editing with Diffusion Models
  • 基于python3.6读取jsonl文件,并保存到Mysql数据库
  • android NDK 编译提示 is not able to compile a simple test program
  • AI创新驱动教育:科技革命下的教育转型
  • 从上市首份半年报业绩亮点看绿联科技发展
  • 面试之mybatis的一二级缓存
  • 基于深度学习的西红柿成熟度检测系统
  • CTF(二)
  • excel导出加密
  • IDEA下lombok安装及找不到get,set的问题的解决方法
  • 【Python-AI篇】数据结构和算法
  • Dockerfile 中 Expose 命令的作用
  • Spring 中的 @AUtowire 和 @Resource 用法和原理,以及避坑
  • 24.安卓逆向-frida基础-objection工具3-实战
  • RabbitMQ系列学习笔记(八)--发布订阅模式
  • linux线程 | 同步与互斥 | 线程池以及知识点补充
  • 轻帆云移动端智能语音提单:一键触达,智能工单新体验,助力高效运营