官方文档:

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的更多相关文章

  1. Redis数据迁移同步工具(redis-shake)

    前言 最近线上一台自建redis服务的服务器频繁报警,内存使用率有点高,这是一台配置比较简陋(2C8G)的机子了,近期也打算准备抛弃它了.抛弃之前需对原先的数据进行迁移,全量数据,增量数据都需要考虑, ...

  2. mac mamp环境 和linux下 安装redis 和可视化工具 Redis Desktop Manager

    mac下安装 第一步:安装redis 1. brew install redis 2.启动服务/usr/local/opt/redis/bin/redis-server 3.配置redis密码访问 编 ...

  3. Windows下Redis安装+可视化工具Redis Desktop Manager使用

    Redis是有名的NoSql数据库,一般Linux都会默认支持.但在Windows环境中,可能需要手动安装设置才能有效使用.这里就简单介绍一下Windows下Redis服务的安装方法,希望能够帮到你. ...

  4. Windows 64位下安装Redis 以及 可视化工具Redis Desktop Manager的安装和使用

    二.下载Windows版本的Redis 由于现在官网上只提供Linux版本的下载,所以我们只能在Github上下载Windows版本的Redis Windows版本的Redis下载地址:https:/ ...

  5. redis可视化管理工具Redis Desktop Manager

    Redis Desktop Manager 官方下载地址:https://redisdesktop.com/download

  6. Redis主从同步介绍

    Redis主从同步命令和配置项 启动主从复制:master无需任何操作,slave中使用以下任意一种开启复制功能 (1).通过配置文件启动主从复制: 在redis.conf中加入"slave ...

  7. 推荐一个好的Redis GUI 客户端工具

    推荐一个好的Redis GUI 客户端工具 Redis Desktop Manager  

  8. 阿里云开源 image-syncer 工具,容器镜像迁移同步的终极利器

    为什么要做这个工具? 由于阿里云上的容器服务 ACK 在使用成本.运维成本.方便性.长期稳定性上大大超过公司自建自维护 Kubernets 集群,有不少公司纷纷想把之前自己维护 Kubernetes ...

  9. 【Redis】Linux下Redis安装与redis-desktop-manager使用(无法连接Redis服务器解决方法)

    新手小白开始学习nosql数据库Redis,首先从安装入手. 全文分两部分:Linux下安装redis,可视化工具redis desktop manager的简单使用. 一.安装 下载,解压缩和编译R ...

  10. 用 C# 写一个 Redis 数据同步小工具

    用 C# 写一个 Redis 数据同步小工具 Intro 为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中.(原本打算找一个已有的工具去做,找了一 ...

随机推荐

  1. 从零开始配置vim(26)——LSP UI 美化

    之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务.本篇讲作为一个补充,我们来优化一下LSP 相关的显示 配置 UI 原始的 lsp ...

  2. 从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系。

    从零构建医疗领域知识图谱的KBQA问答系统:其中7类实体,约3.7万实体,21万实体关系. 项目效果 以下两张图是系统实际运行效果: 1.项目运行方式 运行环境:Python3 数据库:neo4j 预 ...

  3. 做知识图谱遇到的环境问题合集【spacy、gensim、keras_contrib等】

    1.python:spacy.gensim库的安装遇到问题及bug处理 见: python:spacy.gensim库的安装遇到问题及bug处理_汀.的博客-CSDN博客1.spacySpaCy最新版 ...

  4. PGL图学习之图游走类metapath2vec模型[系列五]

    PGL图学习之图游走类metapath2vec模型[系列五] 本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5009827?contr ...

  5. Python 排序与查找算法收集

    Python 语言实现几种不同的排序算法,代码来自于老男孩Python全栈开发,学习教程! import random import time import copy import sys def c ...

  6. conditional_t和enable_if_t的实现

      conditional_t和enable_if_t是元编程里面很相似却有有着一定区别的模板.形如conditional_t<_Cond, _If, _Else>是指如果_Cond表达式 ...

  7. 【译】发布 .NET Aspire 预览版 2(二)

    原文 | Damian Edwards 翻译 | 郑子铭 组件更新 组件包现在有单独的图标 大多数 Aspire 组件的 NuGet 包现在都具有代表性图标,以便在 NuGet 包管理器对话框中更轻松 ...

  8. CF1841

    A 题意:给一个长度为 \(n\) 的全是 \(1\) 的数列,Alice 先操作,Bob 交替.每次操作选择至少两个(可以更多)相等的数字,删除它们,在序列中加入它们的和.直到有人不能操作为止,这个 ...

  9. NC16122 郊区春游

    题目链接 题目 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi,路费是Ci.经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考虑 ...

  10. python 中异常类型总结

    异常类型: 异常名称 描述BaseException             所有异常的基类SystemExit                   解释器请求退出KeyboardInterrupt  ...