美文网首页
Redis--复制

Redis--复制

作者: 简书徐小耳 | 来源:发表于2019-04-21 14:00 被阅读0次

Redis--复制

复制功能的实现

  • 1.通过SLAVEOF命令可以让从服务器同步主服务器的数据。

旧版复制实现的机制

  • 1.复制主要是同步和命令传播。
  • 2.同步(1):从服务器向主服务器发送SYNC命令,主服务器执行BGSAVE,在后台生成一个RDB文件,并使用一个缓冲记录从现在开始执行的所有写命令。
  • 3.同步(2):主服务器把生成好的RDB文件传递给从服务器,从服务器利用RDB文件更新至主数据库执行命令BGSAVE.
  • 4.同步(3):主服务器将缓冲区命令发给从服务器,从服务器执行完毕则状态和主服务器状态一致。
  • 5.命令传播(1):同步完成之后,主服务器执行的命令会传播到从服务器,进而数据库状态就一致。

旧版复制实现的缺陷

  • 1.复制功能主要是两种情况:初次复制,断线后重复制。
  • 2.旧版本复制对于初次复制来说是没有缺陷的,但是断线后重复制却会导致重新全同步进而导致效率变低。

新版复制功能的实现

  • 1.对比旧版本复制,采用PSYNC替代SYNC
  • 2.PSYNC命令采用:完整重同步和部分重同步两种模式。
  • 3.完整重同步:步骤和SYNC一致。
  • 4.部分重同步:只需要将从服务器断线连接期间未接收到的命令重新发给从服务器。

部分重同步的实现

  • 1.主服务的复制偏移量和从服务器的复制偏移量
  • 2.主服务器的复制积压缓冲区
  • 3.服务器的运行ID

PSYNC命令的实现

  • 1.从服务器接收到客户端的SLAVEOF命令
  • 2.从服务器判断是否是第一次执行复制
  • 3.是的话就直接发送PSYNC?-1 直接全同步。
  • 4.如果不是的话向主服务器发送PSYNC runid offset
  • 5.主服务器返回contine就执行部分重同步,否则就是全同步。
  • 6.主服务接收到PSYNC runid offset:首先 主服务器判断runid是否以前同步过
    没有的话就直接执行全同步,有的话就查看offset在命令缓冲区是否存在,如果存在
    执行半同步,否则就执行全同步。

复制的实现

  • 1.在从服务器的配置问中配置主服务器的地址和端口
  • 2.建立socket
  • 3.发送PING命令
  • 4.身份验证
  • 5.从服务器将自己的监听端口号发送给从服务器。
  • 6.同步
  • 7.命令传播

心跳检测

  • 0.在命令传播阶段,从服务器默认每秒一次向主服务器发送命令,命令会传递从服务器复制的偏移量
  • 1.该命令可以检测主从服务器网络。
  • 2.命令会检测 从服务器的下面配置。通过min-slaves-to-write (从服务器的数量),min-slaves-max-lag(从服务器的延迟大于10秒)
  • 3.检测命令丢失,即偏移量是否丢失

相关文章

  • Redis--复制

    Redis--复制 复制功能的实现 1.通过SLAVEOF命令可以让从服务器同步主服务器的数据。 旧版复制实现的机...

  • Redis--主从复制、Sentinel(哨兵)

    01,主从复制 1.快速部署第⼆台Redis服务器 报错总结: 2.db01插⼊测试命令 3.配置主从复制 ⽅法1...

  • Redis--哈希

    哈希类型是指键值本身又是一个键值对结构 -----------------------------命令 ---设置...

  • Redis--命令

    设值 获值 设置过期时间(单位:s) 设置过期时间(单位:s) 设置过期时间(单位:ms) 设置UNIX过期时间戳...

  • Redis--集合

    集合(set)类型也是用来保存多个字符串元素的,但是和列表不一样的是,集合中不允许有重复元素,并且集合中元素是无序...

  • Redis--列表

    列表(list)类型是用来存储多个有序的字符串,一个列表最多可以储存2^32 - 1个元素,列表是比较灵活的数据结...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • Redis--字典

    字典的应用范围 1.redis的DB就是一个字典 2.redis的hash键,当包含的键值较多,又或者键值对中的元...

  • Redis--链表

    链表 链表作用范围 1.列表键包含的数量较多时候使用。 2.列表中包含的元素都是较长的字符串时候使用 链表节点的组...

网友评论

      本文标题:Redis--复制

      本文链接:https://www.haomeiwen.com/subject/dggdgqtx.html