前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这样讲Redis 主从复制的工作原理,或许你真的能听懂~

这样讲Redis 主从复制的工作原理,或许你真的能听懂~

作者头像
AI码师
发布2022-12-22 10:20:17
3120
发布2022-12-22 10:20:17
举报

B站搜索“乐哥聊编程“有本篇文章配套视频‍ https://www.bilibili.com/video/BV1zW4y1j7Rb

主从复制的架构

  • 一主一从
  • 一主多从

主从复制的作用

  • 数据备份
  • 读写分离

主从复制的工作原理

  • runid

主节点的runid,从节点第一次请求复制主节点的时候,主节点会将此runid返回

  • offset(偏移量)

当前数据的偏移量,例如执行一条指令后,产生一条数据后,会增大偏移量,从节点请求复制主节点的时候,会带上这个信息,让主节点从这个偏移量之后的数据返回给我。

全量复制

  • 建立连接后,从节点向主节点发送psync命令,请求同步,携带 runid和offset,如果第一次同步,传 ?和-1
  • 主节点收到psync请求后,发现runid为?和offset为-1,则知道从节点希望全量复制,于是将自己的runid和offset返回给从节点
  • 主节点执行bgsave,生成RDB文件,在此期间生成的命令全部放到buffer中
  • 主节点将生成后的rdb文件,传输给从节点
  • 从节点收到rdb文件后,首先清除自己的数据,然后将rdb文件加载到内存
  • 主节点再把缓冲区的命令发给从节点
  • 从节点再把缓冲区的命令加载到内存

增量复制

如果由于网络问题出现抖动或连接断开,则会导致主从复制不同步,所以当网络连接正常时,则主从之间将发生增量复制而不是全量复制。

  • 从节点向主节点发送psync 命令 携带 已保存的runid和offset
  • 主节点判断runid是否和自己的id一致,如果不一致则执行全量同步
  • 主节点判断offset是否在环形缓冲区内,如果不在泽执行全量同步
  • 否则执行增量同步
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主从复制的架构
  • 主从复制的作用
  • 主从复制的工作原理
    • 全量复制
      • 增量复制
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档