redis迁移同步工具-redis-shake
官方文档:
https://github.com/alibaba/RedisShake/wiki/快速开始:数据迁移
下载:
https://github.com/alibaba/RedisShake/releases
redis-shake.toml 单机到单机配置,源 6383 目标端 6384

启动,增量同步
./redis-shake-linux-amd64 redis-shake.toml
--此启动方式将会 把源端所有数据增量同步到目标端, 目标端现有数据key与源端相同的情况下,会被覆盖, 不同的情况下会保留目标端现有数据,单机同步到集群时需用fifter脚本过滤 源库db到目标库db0
如有数据清洗需求,可使用filter 脚本
官方文档:https://github.com/alibaba/RedisShake/wiki/使用-filters-做数据清洗
脚本说明:
filter 脚本使用 lua 语言编写,在启动 redis-shake 的时候通过命令行传入:
./redis-shake sync.toml ../filters/print.lua
filter 脚本内需要实现一个名为 filter 的 lua 函数:
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
-- write something
return 0, db_id
end
参数说明:
id:number 类型,redis-shake 会对所有数据进行编号,无意义
is_base:boolean 类型,代表这条数据是否是 dump.rdb 中的,可用于跳过存量数据,只同步增量数据。
group:string 类型,代表这条数据是什么类型的,大写,比如 STRING、HASH、LIST、SET 等
cmd_name:string 类型,代表 Redis 命令,大写,比如:HSET、XADD、LPOP 等
keys:table 类型,代表命令中的 key,这里使用 table 类型是因为有多个 key 的命令,比如 MSET。
slots:table 类型,对应 key 所属于的 slot。
db_id:number 类型,databse id。
timestamp_ms:时间戳,目前不可用。
返回值说明:
code:可选值 0,1,2
0:允许此条数据发送至对端
1:跳过此条数据
2:不应该出现此数据,立即终止 redis-shake
db_id:代表这条命令会发送到哪个 database,只在 swap.db 中使用。一般情况下与传入 db_id 保持一致即可。
示例脚本1:
---指定db5数据同步到db6
---指定db8数据同步到db9
---其他db数据不同步
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if db_id == 5 then
-- print("db_id is 5, redirect to 6")
return 0, 6
elseif db_id == 8 then
-- print("db_id is 8, redirect to 9")
return 0, 9
else
return 1, db_id
end
end
示例脚本2:过滤掉前缀为 ABC 的数据:
-- skip keys prefixed with ABC
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if #keys ~= 1 then
return 0, db_id -- allow
end
if string.sub(keys[1], 0, 3) == "ABC" then
return 1, db_id -- disallow
end
return 0, db_id -- allow
end
示例脚本3: 过滤前缀AB并指定同步db 10 到 db 11
function filter(id, is_base, group, cmd_name, keys, slots, db_id, timestamp_ms)
if #keys ~= 1 then
return 0, db_id -- allow
end
--- 0开始截取的索引 2结束时的索引
if string.sub(keys[1], 0, 2) == "AB" and db_id == 10 then
return 0, 11 -- disallow ---同步到db11
else
return 1, db_id -- allow ---其他库都不同步
end
end
redis迁移同步工具-redis-shake的更多相关文章
- Redis数据迁移同步工具(redis-shake)
前言 最近线上一台自建redis服务的服务器频繁报警,内存使用率有点高,这是一台配置比较简陋(2C8G)的机子了,近期也打算准备抛弃它了.抛弃之前需对原先的数据进行迁移,全量数据,增量数据都需要考虑, ...
- mac mamp环境 和linux下 安装redis 和可视化工具 Redis Desktop Manager
mac下安装 第一步:安装redis 1. brew install redis 2.启动服务/usr/local/opt/redis/bin/redis-server 3.配置redis密码访问 编 ...
- Windows下Redis安装+可视化工具Redis Desktop Manager使用
Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...
- Windows 64位下安装Redis 以及 可视化工具Redis Desktop Manager的安装和使用
二.下载Windows版本的Redis 由于现在官网上只提供Linux版本的下载,所以我们只能在Github上下载Windows版本的Redis Windows版本的Redis下载地址:https:/ ...
- redis可视化管理工具Redis Desktop Manager
Redis Desktop Manager 官方下载地址:https://redisdesktop.com/download
- Redis主从同步介绍
Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...
- 推荐一个好的Redis GUI 客户端工具
推荐一个好的Redis GUI 客户端工具 Redis Desktop Manager
- 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器
为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...
- 【Redis】Linux下Redis安装与redis-desktop-manager使用(无法连接Redis服务器解决方法)
新手小白开始学习nosql数据库Redis,首先从安装入手. 全文分两部分:Linux下安装redis,可视化工具redis desktop manager的简单使用. 一.安装 下载,解压缩和编译R ...
- 用 C# 写一个 Redis 数据同步小工具
用 C# 写一个 Redis 数据同步小工具 Intro 为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中.(原本打算找一个已有的工具去做,找了一 ...
随机推荐
- 强化学习技巧三:Python多进程
1.Python多进程模块 Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Proce ...
- 使用visio如何快速生成一个网格状图案,文档技巧!
如何使用visio如何快速生成一个网格状图案 我的成果图: 操作步骤如下: 1.新建一个visio文件,选择"基本框图".点击创建. 2.从左侧形状窗口中基本形状中选中正方形拖动到 ...
- socket编程 [补档-2023-07-10]
Linux网络编程 1.socket编程 socket是一种通信机制,用于在网络中不同计算机之间进行数据传输,当然也可用用于进程间通信.在linux中,有文件描述符这么个东西,我们可以通过socket ...
- DataSet类型转换实体
查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值. 基础调用 DataSet ds = DbHelper.Query(SQL); if (ds.Ta ...
- C++界面库(十几种,很全)
C++界面库是用于GUI界面设计的工具包,可以帮助开发人员快速开发出美观.易用的界面.在选择C++界面库的时候,开发人员需要根据项目要求.使用场景.开发难易程度以及所适配的操作系统等因素进行综合考虑. ...
- MySQL8 查询优化新工具 Explain Analyze
1.什么是Explain Analyze? Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估(并非实际的执行情况,可能与实际情况存在较大差距),给出很多有用的线索. Expl ...
- 回顾复习之背包DP
\(\small{(本文统一将c[i]视作cost,w[i]视作worth,下面的代码用这两个变量表示费用和价值)}\) \(\Large\textbf{1. 01背包}\) \(\large\tex ...
- 近五年的APIO
[APIO2018] 铁人两项 题意:给定一个张图,询问其中有多少个有序三元组 \((u,v,w)\),满足存在一条从 \(u\) 到 \(w\) 的简单路径,经过点 \(v\). 考虑建出原图的圆方 ...
- JS leetcode 找到所有数组中消失的数字 题解分析
壹 ❀ 引 十天前做的一道题了,一直没整理,今天才花时间去读了官方题解思路,这道题也凸显出了算法思路的重要性,执行耗时差的真不是一点半点.题目来自448. 找到所有数组中消失的数字,题目描述如下: 给 ...
- 多线程系列(三) -synchronized 关键字使用详解
一.简介 在之前的线程系列文章中,我们介绍了线程创建的几种方式以及常用的方法介绍. 今天我们接着聊聊多线程线程安全的问题,以及解决办法. 实际上,在多线程环境中,难免会出现多个线程对一个对象的实例变量 ...