基于Redis-Shake实现Redis实时同步的示例代码

 更新时间:2025年11月18日 08:29:24   作者:宇轩辞白  
本文主要介绍了基于Redis-Shake实现Redis实时同步的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、前言

Redis-Shake是阿里云技术团队开源的一款Redis数据迁移与处理工具,支持数据迁移、备份、恢复和实时同步等多种功能。能够帮助你在不同Redis环境之间稳定高效的移动数据。

核心功能

  • sync(同步):支持全量数据迁移和增量数据实时同步,适用于业务不停服迁移、异地容灾、多活架构
  • dump(备份):将源Redis的数据备份到RDB文件中,适用于为数据备份、数据恢复做准备
  • Restore(恢复):将RDB文件中的数据恢复到目标Redis实例。适用于数据恢复、从备份文件快速搭建新环境
  • rump(扫描): 通过SCMP命令迁移数据,适用于不支持SYNC/PSYNC命令的环境。适用于迁移Codis、Twemproxy等代理架构的数据

二、实施步骤

2.1 下载redis-shake二进制安装包

#wget https://github.com/alibaba/RedisShake/releases/download/v3.1.7/redis-shake-linux-amd64.tar.gz
#tar zxvf redis-shake-linux-amd64.tar.gz -C /root/

2.2 配置rsync模块文件

在这里定义源端redis和目标redis相关信息即可

[sync_reader]
address = "源Redis地址:端口"  # 例如:192.168.1.1:6379

[redis_writer]
address = "目标Redis地址:端口" # 例如:r-bp1xxxxx.redis.rds.aliyuncs.com:6379

[advanced]
parallel = 32  # 并发线程数,根据服务器性能调整

[filter]
# 可选:跳过以"temp:"或"cache:"开头的Key
block_key_prefix = ["temp:", "cache:"]

2.3 配置systemd

配置redis-shake服务,将其托管至systemd

#vim /etc/systemd/system/redis-shake.service
[Unit]
Description=RedisShake Data Sync Service
After=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/root/redis-shake
ExecStart=/root/redis-shake/redis-shake /root/redis-shake/sync.toml
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

2.4 启动并设置为自启

启动后,Redis-Shake会先在屏幕上打印全量同步的进度日志。当你看到 sync rdb done 的提示时,就意味着它已经进入了增量同步阶段,会持续将源实例的变更实时同步到目标实例

#systemctl daemon-reload
# systemctl enable --now redis-shake
Created symlink from /etc/systemd/system/multi-user.target.wants/redis-shake.service to /etc/systemd/system/redis-shake.service.

三、验证

测试我们可以在源端redis创建测试键值对。如下

127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> SET test_bxy "test_value1"
OK

在目标端redis验证 键值对是否同步过来。

redis-cli -h 192.168.x.x  -p 9736 -a 123456 -n 1 GET test_bxy

由此可见,目标端键值对数据已同步过来了。

到此这篇关于基于Redis-Shake实现Redis实时同步的示例代码的文章就介绍到这了,更多相关Redis-Shake Redis实时同步内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于redis Key淘汰策略的实现方法

    关于redis Key淘汰策略的实现方法

    下面小编就为大家带来一篇关于redis Key淘汰策略的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 使用Redis的List实现缓存分页信息

    使用Redis的List实现缓存分页信息

    Redis List 是基于双向链表实现的有序集合(按插入顺序排序),借助 lrange 命令可快速实现分页查询,相比传统数据库(如 MySQL)的 limit offset 分页,Redis List 分页在热点数据、小范围分页场景下性能更稳定,本文给大家介绍了如何使用Redis的List实现缓存分页信息
    2026-02-02
  • Redis源码阅读:Redis字符串SDS详解

    Redis源码阅读:Redis字符串SDS详解

    这篇文章主要介绍了Redis源码阅读:Redis字符串SDS,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • 基于Redis实现分布式单号及分布式ID(自定义规则生成)

    基于Redis实现分布式单号及分布式ID(自定义规则生成)

    一些业务背景下,业务要求单号需要有区分不同的前缀,那么在分布式的架构下如何自定义单号而且还能保证唯一呢?本文就来详细的介绍一下
    2021-09-09
  • Redis实现分布式锁的示例代码

    Redis实现分布式锁的示例代码

    分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现,本文就来介绍一下Redis实现分布式锁的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • redis实现分布式延时队列的示例代码

    redis实现分布式延时队列的示例代码

    延时队列是一种特殊的消息队列,它允许将消息在一定的延迟时间后再进行消费,延时队列的实现方式可以有多种,本文主要来介绍一种redis实现的分布式延时队列,希望对大家有所帮助
    2023-10-10
  • Redis Cluster集群动态扩容的实现

    Redis Cluster集群动态扩容的实现

    本文主要介绍了Redis Cluster集群动态扩容的实现,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Redis本地/远程(外部)连接失败问题及解决

    Redis本地/远程(外部)连接失败问题及解决

    这篇文章主要介绍了Redis本地/远程(外部)连接失败问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • redis延时队列的项目实践

    redis延时队列的项目实践

    本文主要介绍了redis延时队列的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Redis字符串原理的深入理解

    Redis字符串原理的深入理解

    这篇文章主要给大家介绍了关于Redis字符串原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论