Skip to content

tair-opensource/RedisShake

Repository files navigation

RedisShake: Redis Data Transformation and Migration Tool

CI Website Release ghcr.io

Overview

RedisShake is a powerful tool for Redis data transformation and migration, offering:

  1. Zero Downtime Migration: Enables seamless data migration without data loss or service interruption, ensuring continuous operation during the transfer process.

  2. Valkey/Redis Compatibility: Supports Redis (2.8 to 8.x) and Valkey (8.x to 9.x) across standalone, master–slave, sentinel, and cluster deployments. See Version Compatibility for detailed feature support.

  3. Cloud Service Integration: Seamlessly works with Redis-like databases from major cloud providers:

  4. Module Support: Compatible with TairString, TairZSet, and TairHash.

  5. Flexible Data Source: Supports PSync, RDB, and Scan data fetch methods.

  6. Advanced Data Processing: Enables custom script-based data transformation and easy-to-use data filter rules.

How to Get RedisShake

For Humans

  1. Download from Releases.

  2. Use Docker:

docker run --network host \
    -e SYNC=true \
    -e SHAKE_SRC_ADDRESS=127.0.0.1:6379 \
    -e SHAKE_DST_ADDRESS=127.0.0.1:6380 \
    ghcr.io/tair-opensource/redisshake:latest
  1. Build it yourself:
git clone https://github.com/tair-opensource/RedisShake
cd RedisShake
sh build.sh

For LLM Agents

Copy and paste this prompt to your LLM agent (Claude Code, Cursor, etc.):

Read the RedisShake usage guide and help me with my task:
https://raw.githubusercontent.com/tair-opensource/RedisShake/v4/README_FOR_AGENTS.md

How to Use RedisShake

To move data between two Redis instances and skip some keys:

  1. Make a file called shake.toml with these settings:
[sync_reader]
address = "127.0.0.1:6379"

[redis_writer]
address = "127.0.0.1:6380"

[filter]
# skip keys with "temp:" or "cache:" prefix
block_key_prefix = ["temp:", "cache:"] 
  1. Run RedisShake:
./redis-shake shake.toml

For more help, check the docs.

Limitations

Resumable Transfer (Checkpoint) is NOT Supported: RedisShake 4.x does not support resumable transfer. Unlike commercial solutions such as Alibaba Cloud DTS or Tair Global Active-Active which can resume from the last checkpoint after interruption, RedisShake will perform a full resync from the beginning when restarted.

Cluster Topology Change Awareness is NOT Supported: RedisShake assumes a static cluster topology. Any topology changes (such as scaling, failover, or slot migration) will cause the process to panic. Combined with the lack of checkpoint support, RedisShake is best suited for one-time data migration scenarios, not for long-term continuous synchronization.

Cross-Version Migration

Before migrating data between different major versions of Redis, we recommend using the resp-compatibility tool for a compatibility check and consulting the compatibility report to avoid known breaking changes and bugs.

History

RedisShake, actively maintained by the Tair team at Alibaba Cloud, evolved from redis-port. Key milestones:

  • RedisShake 2.x: Improved stability and performance.
  • RedisShake 3.x: Complete codebase rewrite, enhancing efficiency and usability.
  • RedisShake 4.x: Enhanced readers, configuration, observability, and functions.

License

RedisShake is open-sourced under the MIT license.

About

RedisShake is a Valkey/Redis data processing and migration tool.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages