reids(四)多机数据库复制

本文深入探讨了Redis的主从复制机制,包括旧版本sync命令的缺陷与改进后的psync命令,以及复制积压缓冲区如何提高同步效率。通过对比完整重同步与部分重同步,解析了Redis如何在保持数据一致性的同时,减少不必要的资源消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这里主要涉及到了主从复制的问题。
复制主要涉及到2个功能:同步和命令传播

同步

旧版本(sync)

在这里插入图片描述
步骤:

  1. 从服务器发送sync命令给主服务器
  2. 主服务器发送rdb文件给从服务器
  3. 并将缓冲区的所以写命令都发给从服务器

在这里插入图片描述

命令传播

在这里插入图片描述
在这里插入图片描述
需要主服务器发送命令给从服务器,他们的数据才会保存一致性。

旧复制功能的缺陷

在这里插入图片描述
在上表中,从服务器如果断开了连接,然后进行了重连,只好再次发送sync命令,然后再次载入rdb文件,这样对实现相对来说比较简单,但是,从服务器启动的时间会随着rdb文件的增大,而越慢。

复制(psync)

在这里插入图片描述
在这里插入图片描述
可以看到服务器增加了一个offset值,这个值说明着当前服务器上数据与主服务器是否同步。
如果是同步的,则主从的offset值是相同的。利用这个offset值,则可以在复制节点进行高效率同步
在这里插入图片描述
同时主服务器会在里面维护着一个复制积压缓冲区。

  • 从服务器如果断开连接后,再次进行同步的话,
  • 使用psync命令发送给主服务器,并且发送的时候会带上自己的offset值。
  • 主服务器会判断从服务器的offset值之后的是否还在复制积压缓冲区当中,如果存在则返回continue
  • 从复制积压缓冲区中发送从服务器offset之后的所有命令
  • 如果不存在,则执行完整重同步。sync过程

在这里插入图片描述

复制的实现

  1. 设置主服务器的地址和端口
  2. 建立套接字连接
  3. 发送ping命令
  4. 如果需要身份验证,则进行身份验证
  5. 发送端口信息,让主服务器保存从服务器的信息
  6. 进行同步,如果是第一次连接,执行完整重同步,如果有offset值,则进行判断是否需要执行部分重同步。
  7. 命令传播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值