Redis 中文文档 Redis 中文文档
指南
redis.io (opens new window)
指南
redis.io (opens new window)
  • 关于
    • Redis 开源治理
    • Redis 发布周期
    • Redis 赞助商
  • 入门
  • 数据类型
  • Redis Stack
  • 命令
  • 手册

redis-shake


CI

中文文档

redis-shake is a tool for Redis data migration and data filtering.

Feature


🚄* High performance
✅* Tested on Redis 5.0, Redis 6.0 and Redis 7.0
🤗* Support custom filtering rules
💪* Support large instance migration
💖* Support restore mode, sync mode and scan mode
☁️* Support Aliyun Redis and ElastiCache

For older versions of redis-shake (support codis, twemproxy) please visit here.

Document


Install


Binary package


Download from Release: https://github.com/alibaba/RedisShake/releases

Compile from source


After downloading the source code, run the sh build.sh command to compile.

  1. ``` shell
  2. git clone https://github.com/alibaba/RedisShake
  3. cd RedisShake
  4. sh build.sh
  5. ```

Usage


Edit sync.toml or restore.toml.
Start redis-shake.

  1. ``` shell
  2. ./bin/redis-shake redis-shake.toml
  3. # or
  4. ./bin/redis-shake restore.toml
  5. ```

Check data synchronization status.

Configure


The redis-shake configuration file refers to sync.toml or restore.toml.

Data filtering


redis-shake supports custom filtering rules using lua scripts. redis-shake can be started with the following command:

  1. ``` shell
  2. ./bin/redis-shake sync.toml filter/xxx.lua
  3. ```

Some following filter templates are provided in filter directory:

filter/print.lua :print all commands
filter/swap_db.lua :swap the data of db0 and db1

Custom filter rules


Refer to filter/print.lua to create a new lua script, and implement the filter function in the lua script. The arguments of the function are:

id: command id
is_base: is the command read from the dump.rdb file
group: command group, see the description file under redis/src/commands
cmd_name: command name
keys: keys in command
slots: slots in command
db_id: database id
timestamp_ms: timestamp of the command in milliseconds. The current version does not support it.

The return value is:

code
0: allow this command to pass
1: this command is not allowed to pass
2: this command should not appear, and let redis-shake exit with an error

db_id: redirected db_id

Contribution


Lua script


Welcome to share more creative lua scripts.

Add lua scripts under filters/.
Add description to README.md.
Submit a pull request.

Redis Module support


Add code under internal/rdb/types.
Add a command file under scripts/commands, and use the script to generate a table.go file and move it to the internal/commands directory.
Add test cases under test/cases.
Submit a pull request.

感谢


redis-shake 旧版是阿里云基于豌豆荚开源的 redis-port 进行二次开发的一个支持 Redis 异构集群实时同步的工具。 redis-shake v3 在 redis-shake 旧版的基础上重新组织代码结构,使其更具可维护性的版本。

redis-shake v3 参考借鉴了以下项目:

https://github.com/HDT3213/rdb
https://github.com/sripathikrishnan/redis-rdb-tools
Last Updated: 2023-09-03 19:17:54