✅ Redis-Shake 支持 Docker 部署
Redis-Shake(v3,推荐版本,支持 key 过滤)没有官方 Docker 镜像,但社区广泛使用两种容器方案:
直接用二进制 + 自定义 Dockerfile(生产推荐)
docker-compose 一键拉起(测试 / 演练) 同时也提供传统二进制部署方式。
Github:https://github.com/tair-opensource/RedisShake v3 才支持
allow_key_prefix等 key 过滤,v2 没有内置前缀过滤,一定要用 v3
一、Docker 部署方案(推荐,独立中转机)
1. 目录准备
mkdir -p /opt/redis-shake/conf
cd /opt/redis-shake
新建配置文件 conf/shake.toml(只同步 user: 前缀 key,PSync 全量 + 增量,就是前面我们聊的按 key 过滤)
type = "sync"
[sync_reader]
address = "192.168.1.10:6379" #源Redis
password = "source@123"
tls = false
[sync_writer]
address = "192.168.1.20:6379" #目标Redis
password = "target@123"
tls = false
[filter]
allow_key_prefix = ["user:"]
allow_db = [0]
[advanced]
log_file = "/logs/redis-shake.log"
log_level = "info"
2. Dockerfile
FROM alpine:3.19
WORKDIR /app
# 安装依赖
RUN apk add --no-cache wget tar
# 下载v3二进制 linux-amd64
RUN wget https://github.com/tair-opensource/RedisShake/releases/download/v3.1.0/redis-shake-linux-amd64.tar.gz && \
tar -zxvf redis-shake-linux-amd64.tar.gz && rm -f redis-shake-linux-amd64.tar.gz
VOLUME ["/app/conf", "/logs"]
# 启动命令,加载toml配置
CMD ["./redis-shake", "/app/conf/shake.toml"]
3. docker-compose.yml(一键启动)
version: '3.8'
services:
redis-shake:
build: .
container_name: redis-shake
restart: unless-stopped
volumes:
- ./conf:/app/conf
- ./logs:/logs
# 网络:能访问源Redis、目标Redis
network_mode: "bridge"
# host网络模式备选:network_mode: host
4. 构建 & 启动
# 构建镜像
docker-compose build
# 后台启动
docker-compose up -d
# 查看日志
docker logs -f redis-shake
⚠️ 网络重点:容器内必须能 ping 通、能访问源 Redis 和目标 Redis 的 6379 端口。 如果源 / 目标在宿主机,不要用 127.0.0.1,要用宿主机内网 IP;跨机房需要放通防火墙 / 安全组。
二、传统二进制部署(不用 Docker,线上备选)
# 下载v3
wget https://github.com/tair-opensource/RedisShake/releases/download/v3.1.0/redis-shake-linux-amd64.tar.gz
tar -zxvf redis-shake-linux-amd64.tar.gz
cd redis-shake-linux-amd64
# 编写 shake.toml(同上配置文件)
# 前台启动(测试)
./redis-shake shake.toml
# 后台常驻(生产,用nohup/systemd)
nohup ./redis-shake shake.toml > redis-shake.log 2>&1 &
生产长期同步建议做成 systemd 托管,方便自启动、日志管理。
三、关键前置检查(部署前必做)
源 Redis:支持 PSync,
replicaof权限,密码正确;云 Redis 很多云厂商 PSync 受限,只能改用scan_reader模式。端口:源 6379、目标 6379,Redis-Shake 所在机器双向连通。
版本:v3 才有内置 key 前缀过滤,v2 只能 Lua 脚本过滤,不推荐。
内存:容器 / 机器预留足够内存,全量 RDB 回放阶段占用内存较高。
四、常用操作命令
# 停止同步
docker-compose down
# 查看实时同步日志
docker logs -f redis-shake
# 查看同步指标:qps、全量进度、延迟
# redis-shake内置metrics,默认 http://容器IP:9320/metrics
五、生产避坑
Docker 容器默认 bridge 网络,访问宿主机 Redis 不能写 127.0.0.1,要用宿主机内网 IP;
同步持续运行,属于长进程,业务割接完成后手动停止;
全量阶段源 Redis 生成完整 RDB,哪怕只同步少量 key,源端依然有 fork 开销;
同步完成后,一定要做数据校验:key 数量抽样,大 key 比对。
六、两种部署方式对比
本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。
原文链接
欢迎访问