RedisSyncer 中采用链式策略处理同步数据

RedisSyncer 使用 replid 和 offset 实现断点续传,避免数据不一致。v2 版本引入事务处理,通过 multi-exec 包装命令,确保一致性。在目标 Redis 的每个逻辑库中写入 checkpoint,选取最大 offset 作为续传参数。同时,具备数据补偿机制,处理写入失败的情况,并采用断线重连机制,保证源端和目标端连接的稳定性。通过链式策略处理同步数据,确保所有策略通过才同步 key 到目标 Redis。
摘要由CSDN通过智能技术生成

RedisSyncer 的断点续传机制是基于 Redis 的 replid 和 offset 来实现的,RedisSyncer 有两个版本的断点续传机制 v1 和 v2。

  • v1 版本:

v1 版本数据写入到目的端 redis 后,将 offset 持久化到本地,这样下次重启就从上次的 offset 拉取。但是由于该方案写目的端的操作和 offset 持久化不是一个原子的操作。如果中间发生中断会导致数据的不一致。 例如,先写入数据到目的端成功,后持久化 offset 还没成功就发生了宕机、重启等情况,那么再次断点续传拉取上一次的 offset 数据最后就不一致了。  

  • v2 版本:

在 v2 版本策略中 RedisSyncer 会将每一个 pipeline 批次中不存在事务的的命令通过 multi 和 exec 进行包装,并在事务尾部插入 offset 检查点。 当断点续传时需要从目标 Redis 的所以 db 库中查找 checkpoint 并找到所对应源节点当最大 offset,再根据该 offset 进行断点续传。目前 v2 版本只支持目标为单机 Redis 的情况。 在 v2 版本中

  • v2 命令事务封装结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值