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

【分布式技术】RedisShake相关功能详细介绍

文章目录

  • 🧩 一、什么是 RedisShake?
  • 🧩 二、RedisShake 的核心功能
  • 🧩 三、RedisShake 支持的同步场景
  • 🧩 四、RedisShake 支持的 Redis 架构类型
  • 🧩 五、RedisShake 的工作原理(同步流程)
    • 5.1 基本同步流程
      • 同步分为两个阶段:
        • ① 全量同步(RDB 快照方式)
        • ② 增量同步(AOF / 命令传播)
    • 5.2 断点续传
  • 🧩 六、RedisShake 的使用方式
    • 6.1 部署方式
    • 6.2 配置方式
  • 🧩 七、RedisShake 的优缺点
    • ✅ 优点
    • ❌ 缺点与注意事项
  • 🧩 八、RedisShake 典型使用案例
  • 🧩 九、总结

🧩 一、什么是 RedisShake?

RedisShake 是由 阿里云开源 的一款用于 Redis 数据同步的工具,它的主要作用是:

将一个 Redis 实例(或集群)的数据,高效、可靠地同步到另一个 Redis 实例(或集群)。

它相当于 Redis 生态中的 数据搬运工 / 同步引擎,支持多种 Redis 部署模式之间的数据迁移与同步,是实现 Redis 主备容灾、数据迁移、多活架构、灾备演练 的重要工具。

🔗 GitHub 地址(官方):
👉 https://github.com/alibaba/RedisShake

🧩 二、RedisShake 的核心功能

RedisShake 支持以下核心功能:

功能说明
数据同步支持从一个 Redis 拉取数据并写入到另一个 Redis
全量 + 增量同步首次全量同步,后续持续增量同步,保证数据一致性
断点续传同步中断后可恢复,避免重复同步与数据丢失
跨集群同步支持 Redis 单机 ⇄ Cluster、Cluster ⇄ Cluster、跨云同步
多 Redis 部署模式支持支持单机、主从、哨兵、Redis Cluster
数据过滤可按 DB、Key 前缀等过滤同步的数据
限速与路由可限制同步速率,支持只同步部分 slot(Cluster 场景)
异构同步支持不同 Redis 版本、不同配置间的数据同步(有一定限制)
监控与日志提供详细的运行日志、同步统计、错误信息等

🧩 三、RedisShake 支持的同步场景

RedisShake 被广泛用于以下 典型业务与运维场景

场景说明
🔄 Redis 主备容灾将主集群数据同步到备集群,实现灾备与快速切换
🏃 数据迁移将 Redis 数据从一个环境迁移到另一个(如测试→生产、旧集群→新集群)
🌍 异地多活 / 跨机房同步跨机房 / 跨云厂商同步数据,实现多活架构基础
🧪 灾备演练 / 容灾测试定期将生产数据同步到备机,验证备机可用性与数据完整性
🛠️ Redis 版本升级 / 集群重构在不影响业务的情况下,迁移或重构 Redis 集群
💾 备份与校验定期同步数据进行备份,可用于数据比对与恢复验证

🧩 四、RedisShake 支持的 Redis 架构类型

Redis 类型是否支持说明
单机 Redis✅ 支持常规单节点 Redis
主从 Redis✅ 支持支持从 Master 或 Slave 拉取数据
哨兵模式(Sentinel)✅ 支持自动发现主节点,支持高可用
Redis Cluster(集群模式)✅ 支持官方分布式方案,支持多分片、高并发
跨集群同步✅ 支持比如单机 → Cluster、Cluster → Cluster、跨云同步等
不同 Redis 版本⚠️ 有限支持一般建议版本相近,部分命令/特性可能不兼容

🧩 五、RedisShake 的工作原理(同步流程)

5.1 基本同步流程

  1. Source(源 Redis):需要被同步的 Redis 实例(比如主集群)
  2. Target(目标 Redis):接收同步数据的 Redis 实例(比如备集群)
  3. RedisShake:作为中间同步程序,从 Source 拉取数据并写入 Target

同步分为两个阶段:

① 全量同步(RDB 快照方式)
  • RedisShake 会向源 Redis 发起 PSYNC 或 SYNC 命令,获取 RDB 快照
  • 将 RDB 文件接收并解析后,批量写入目标 Redis
  • 此阶段同步历史所有数据。
② 增量同步(AOF / 命令传播)
  • 全量完成后,RedisShake 会持续监听源 Redis 的 命令流(replication stream)
  • 将收到的写命令(如 SET、DEL、HSET 等)实时转发到目标 Redis
  • 保证后续的变更也能同步过去,实现准实时同步。

5.2 断点续传

  • RedisShake 支持记录同步位点(如 RDB 同步位置、Command ID);
  • 如果同步中断(如网络抖动、进程重启),可以 从断点处继续同步,避免重复或遗漏;
  • 极大提升同步的可靠性和稳定性。

🧩 六、RedisShake 的使用方式

6.1 部署方式

  • 独立部署:将 RedisShake 部署在一台 独立的服务器 / 容器 / VM 上;
  • 轻量级:单进程程序,资源占用较低,但对网络和 IO 有一定要求;
  • 网络要求:源 Redis 和目标 Redis 都要能与 RedisShake 互通(最好低延迟、高带宽)。

6.2 配置方式

RedisShake 通过 配置文件(如 shake.conf)命令行参数 启动,核心配置项包括:

配置项说明
source.address源 Redis 地址,如 redis://:password@ip:port
target.address目标 Redis 地址,如 redis://:password@ip:port
sync_mode同步模式,如 all(全量+增量)、full(仅全量)、update(仅增量)
password_raw如果 Redis 设置了密码,需要配置
db可指定只同步某个 DB
filter.*支持按 key 前缀、DB 等过滤
rate_limit限速配置(可选)

🔧 配置文件示例(shake.conf):

id = redis-shake-1
source.address = redis://:sourcePass@10.0.1.10:6379
target.address = redis://:targetPass@10.0.2.10:6379
sync_mode = all  # 全量 + 增量同步

启动命令:

./redis-shake -type=sync -conf=shake.conf

🔍 更多配置与用法,请参考官方文档:https://github.com/alibaba/RedisShake/blob/master/doc/user_guide.md

🧩 七、RedisShake 的优缺点

✅ 优点

优点说明
功能全面支持几乎所有 Redis 同步场景:全量、增量、断点续传、跨集群等
官方开源由阿里云团队维护,稳定性和可靠性较高
异构支持支持不同 Redis 类型、版本之间的数据同步(有一定限制)
高性能基于 Go 开发,同步效率高,对大数据量友好
灵活配置支持过滤、限速、多地址、多场景配置
生产就绪已在阿里云等大规模环境下验证,适合生产部署

❌ 缺点与注意事项

缺点说明
异步复制增量同步是异步的,目标 Redis 数据会有延迟,不适合强一致性场景
网络要求高源和目标 Redis 与 Shake 之间网络要稳定、低延迟、高带宽
版本兼容性不同 Redis 版本间同步可能存在兼容性问题(建议版本相近)
无事务一致性保证某些复杂事务或 Lua 脚本可能无法完美同步
监控需自行集成原生提供日志,但如需 Prometheus 等监控,需额外开发

🧩 八、RedisShake 典型使用案例

案例说明
Redis 主备容灾将主 Redis 集群数据同步到备集群,主挂后快速切换
跨机房同步同步北京机房 Redis 到上海/广州,实现异地多活基础
Redis 集群重构 / 升级迁移老集群数据到新集群,或从单机迁移到 Cluster
数据灾备与演练定期同步生产数据到灾备 Redis,用于故障恢复测试
云间数据迁移比如从阿里云 Redis 迁移到腾讯云、华为云等

🧩 九、总结

项目说明
工具名称RedisShake
作用Redis 数据同步工具,支持全量+增量、断点续传、跨集群、跨云同步
支持架构单机、主从、哨兵、Redis Cluster,支持跨架构同步
适用场景主备容灾、数据迁移、多活架构、灾备演练、集群升级等
优点功能强大、开源稳定、高性能、灵活配置
缺点异步同步有延迟、需网络保障、版本兼容性需注意
http://www.dtcms.com/a/392915.html

相关文章:

  • qsv:一款高性能的CSV数据处理工具
  • `html` 将视频作为背景
  • 口播提词器怎么选?手机提词器实测指南与参数推荐
  • 解剖线性表
  • 计算数学研究方向有哪些细分领域?
  • [xboard]08-Makefile逐行分析2
  • Clash 中 REJECT 的技术原理与解决方案 —— 以哔哩哔哩延迟问题为例
  • 庖丁解牛与专家思维:道家的“心手合一”训练法
  • matlab通过GUI实现点云的读取、自定义显示和保存
  • 工业现场实战:如何利用智能网关实现西门子PLC与库卡机器人的无缝连接
  • 【开题答辩全过程】以 Java程序设计课程作业数据分析为例,包含答辩的问题和答案
  • ubuntu配置cuda与torch
  • C语言:输出水仙花数
  • 进程的创建
  • 如何用Anaconda Navigator和命令行管理Python库?
  • 28 种 LLM 越狱攻击全景拆解(2025.9 版)从“AIM”到“Generation Exploitation”,一张防御地图看懂所有套路
  • 第14章 智能床位
  • 总结一下MySQL数据库服务器性能优化的几个维度
  • IP 打造财富新机遇
  • linux系统如何查看文件位置在数据盘还是系统盘
  • C#关键字 unchecked与checked
  • EasyClick JavaScript 字符串进阶
  • 小明打砖块-算法
  • 【Open3D】在Conda环境下安装Open3D | Anaconda | VSCode
  • AWS 的存储方案全对比:EBS、S3、EFS 用在哪?
  • 【实证分析】上市公司债务违约风险KMV模型及违约距离(2000-2023年)
  • 【牛客网】dd爱科学 最长非递减子序列 二分查找
  • vmware安装uos v20无法识别网卡
  • 力扣hot100 | 动态规划1 | 70. 爬楼梯、118. 杨辉三角、198. 打家劫舍、279. 完全平方数、322. 零钱兑换
  • 每天五分钟深度学习:softmax回归的交叉熵损失的前向传播