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

5条curl命令搞定Redis同步:RedisSyncer创建、启动、停止与查询任务实战

5条curl命令搞定Redis同步:RedisSyncer创建、启动、停止与查询任务实战

【免费下载链接】redissyncer-serverRedisSyncer是一个多任务的redis数据同步工具,可灵活的满足Redis间的数据同步、迁移需求; redissyncer is a redis synchronization tool, used in redis single instance and cluster synchronization项目地址: https://gitcode.com/gh_mirrors/re/redissyncer-server

RedisSyncer 是一个开源的多任务 Redis 数据同步工具,支持单实例与集群之间的数据同步和迁移。本文带你用 5 条 curl 命令走通 RedisSyncer 的任务创建、启动、查询、停止与删除全流程,10 分钟上手。

上图展示了 RedisSyncer 的核心架构:replicator负责从源 Redis 拉取数据(存量 RDB + 增量命令),transmission负责将数据写入目标 Redis,用户则通过底部的Restful API(也就是本文主角 curl 命令)来管理同步任务。

在分布式部署模式下,RedisSyncer 还包含 portal(任务调度)、server(执行同步任务)和 etcd(注册与健康上报)三类组件,支持多节点水平扩展。

一、准备工作:1分钟启动RedisSyncer服务

在执行 curl 命令前,先启动服务端。两种方式任选其一(详见 docs/quickstart.md):

方式1:jar 包启动

mvn clean package -Ddockerfile.skip java -jar syncer-webapp/syncer-webapp.jar

方式2:Docker 启动

docker run -idt -m 2G -p 8000:80 --name redissyncer redissyncer:v2.0.8

服务默认监听8080端口(Docker 示例映射为 8000)。假设 RedisSyncer 部署在10.0.0.100:8080,源 Redis 为192.168.0.10:6379,目标 Redis 为192.168.1.10:6379

二、命令1:创建同步任务(creattask)

这是最核心的一条命令,通过POST /api/v2/creattask描述"从哪个 Redis 同步到哪个 Redis":

curl -X POST \ http://10.0.0.100:8080/api/v2/creattask \ -H 'Content-Type: application/json' \ -d '{ "sourcePassword": "xxxxxx", "sourceRedisType": "SINGLE", "sourceRedisAddress": "192.168.0.10:6379", "targetRedisAddress": "192.168.1.10:6379", "targetRedisType": "SINGLE", "targetPassword": "xxxxxx", "targetRedisVersion": 4, "taskName": "firsttest" }'

成功返回:

{ "msg": "Task created successfully", "code": "2000", "data": { "taskids": ["10F7B3A0E5344598BAA9F847ADBFF9D6"] } }

💡 记住返回的taskid,它是任务唯一 ID,后续启动、停止、删除都要用它。当源库为集群时,任务会按集群节点数拆分成多个任务,每个任务一个 id。

常用可选参数速查

字段示例说明
tasktype"incrementonly"任务类型:stockonly仅存量 /incrementonly仅增量 /total存量+增量(默认)
dbMapper{"1": "1"}源→目标 db 映射关系,未列出的 db 不同步
filterType"KEY_FILTER_ACCEPT"key/命令过滤类型,支持正则
autostarttrue创建后自动启动,可省去第二条命令

集群地址用;分割,如"192.168.1.10:16379;192.168.1.10:16380"。完整的字段说明可参考 docs/3.3/createtask.md,文件类任务(AOF/RDB 文件同步)则参考 docs/3.3/createfiletask.md。

三、命令2:启动同步任务(starttask)

启动接口每次只支持单任务启动:

curl -X POST \ http://10.0.0.100:8080/api/v2/starttask \ -H 'Content-Type: application/json' \ -d '{ "taskid": "10F7B3A0E5344598BAA9F847ADBFF9D6", "afresh": false }'

其中afresh控制断点续传:设为false时从上次中断的 offset 继续;前提是任务之前已进入增量同步阶段且 offset 已记录,否则启动会失败。返回code: 2000即启动成功。

四、命令3:查询任务状态(listtasks)

同步中随时可以查看任务进度,支持按名称、ID、状态查询,也支持分页:

# 按任务名查询 curl -X POST \ http://10.0.0.100:8080/api/v2/listtasks \ -H 'Content-Type: application/json' \ -d '{ "regulation": "bynames", "tasknames": ["firsttest"] }'

regulation取值:all(全部)、bynamesbyidsbystatus。分页查询用/api/v2/listtasksByPage,追加currentPagepageSize即可。常见任务状态含义:

状态含义
CREATING/CREATED创建中 / 创建完成
STARTING启动中
RDBRUNING存量 RDB 数据同步中
COMMANDRUNING增量命令实时同步中
FINISH任务完成
BROKEN任务异常

五、命令4:停止同步任务(stoptask)

停止接口支持批量停止,taskids传数组即可:

curl -X POST \ http://10.0.0.100:8080/api/v2/stoptask \ -H 'Content-Type: application/json' \ -d '{ "taskids": ["10F7B3A0E5344598BAA9F847ADBFF9D6"] }'

返回code: 2000表示停止成功。若任务已停止,再次调用会提示"请先停止处于运行状态的任务"。

六、命令5:删除任务(removetask)

清理不再需要的非运行态任务:

curl -X POST \ http://10.0.0.100:8080/api/v2/removetask \ -H 'Content-Type: application/json' \ -d '{ "taskids": ["10F7B3A0E5344598BAA9F847ADBFF9D6"] }'

⚠️ 运行中的任务不能直接删除,必须先执行 stoptask 停止后再删除。

七、可视化面板:任务列表一目了然

除了 curl,RedisSyncer 还自带 Web 管理面板,创建、启动、停止、删除任务都可以在界面上点选完成,任务状态、同步进度一目了然:

八、实战避坑清单 📝

  • 主从源只填一个节点:源端为主从架构时,只填主节点地址,填多个会导致数据同步两份。
  • 留足内存与带宽:同步前确认源机器内存足够生成至少一个 RDB 文件;建议 RedisSyncer 部署在独立空闲机器上。
  • 调大 slave 缓冲区:注意client-output-buffer-limit的 slave 项,buffer size 与超时时间要设置足够大,防止 RDB 传输被断开。
  • 多观察日志:迁移中和业务切换前,反复查看日志(位置~/log)确认无异常,并充分核对数据一致性。
  • 状态码含义2000成功、4007任务不存在或已在运行、4020不存在指定任务 id、400JSON 格式错误。

以上 5 条 curl 命令覆盖了 RedisSyncer 任务管理的完整生命周期。更多 API 参数细节可查阅 docs/api.md,典型场景案例可参考 docs/scenecases.md。

【免费下载链接】redissyncer-serverRedisSyncer是一个多任务的redis数据同步工具,可灵活的满足Redis间的数据同步、迁移需求; redissyncer is a redis synchronization tool, used in redis single instance and cluster synchronization项目地址: https://gitcode.com/gh_mirrors/re/redissyncer-server

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4174809.html

相关文章:

  • HackRF驱动问题排查:3步跑起来
  • DVWA Web 漏洞靶场保姆级指南:5 分钟跑通,19 个模块带你练完 SQL 注入和 XSS
  • PDFMathTranslate:免费公式级PDF论文翻译
  • 单链表专题
  • 从awesome-python3-webapp到iOS App:跨平台开发实战经验完整指南
  • Xplorer文件管理器完全上手指南:跨平台文件管理一次搞定
  • 告别手写提示词:llava-v1.6-mistral-7b-hf 的 apply_chat_template 完整使用指南
  • Stronghold Procedures 完全参考:BIP39、SLIP10、Ed25519 签名等 20+ 密码学操作一览
  • orga分词器源码剖析:基于text-kit读取器的lexer逐行设计解读
  • 免费打造FIFA 23梦想球队:Live Editor 生涯模式修改器完整上手指南
  • 流媒体时代,本地音乐播放器如何以“简洁”定义核心价值?
  • 工业具身智能落地的工程基石:从概念到实战的系统化底座构建指南
  • Qt插件机制详解:QPluginLoader动态加载与模块化架构完整指南(Awesome_Qt_Learning)
  • 为什么你的Redis客户端太慢?异步Redis客户端aredis完整概览
  • 铸铁平台与钢结构平台选型对比:从阻尼特性到全生命周期成本分析
  • XUnity.AutoTranslator:十分钟让没中译的 Unity 游戏跑起来
  • Connect You 开源联系人应用开发者指南:Jetpack Compose + Room 架构完整解析
  • 从斯大林排序算法看算法正确性与数据完整性
  • 猫抓 Cat-Catch:免费的网页视频资源嗅探与流媒体下载扩展
  • BBDown 命令行下载器:一条命令把 B 站视频存成本地 MP4
  • DRF Docs 安全指南:HIDE_DOCS 配置全解,为什么生产环境必须隐藏 API 文档
  • 多元分数多项式为何衰落?从统计建模稳定性与机器学习范式演变谈起
  • gogstash源码解析(三):codec编解码机制与simpleQueue队列暂停恢复的背压设计
  • SceneKit节点克隆与材质独立难题:Shinkansen 3D Seat Booking Prototype的NodeFactory深克隆技巧
  • 美赛微分方程建模实战:从识别到求解的完整指南
  • rack-tracker 埋点中间件安全深度解析:从 XSS 防护到线程安全的完整设计指南
  • 腾讯前端面试核心考点:JS基础与框架原理解析
  • LÖVE Potion架构深度剖析:modules/objects/utilities三层设计,LÖVE框架移植方法论全解读
  • TP6-Vue-Admin:ThinkPHP6 后台 + Vue 管理后台,前后端分离后台管理系统快速搭建指南
  • 分布感知算法设计:LLM智能体如何根据数据特征优化算法性能