在Docker环境中复制Redis数据有几种常见方法,以下是详细的解决方案:
找到Redis数据文件位置:
docker inspect <redis_container_name> | grep "volumes\|-v"
或检查Redis配置中的dir
和dbfilename
参数
复制RDB或AOF文件:
# 从容器中复制RDB文件
docker cp <redis_container_name>:/data/dump.rdb ./dump.rdb
# 或复制AOF文件
docker cp <redis_container_name>:/data/appendonly.aof ./appendonly.aof
将文件复制到新Redis实例:
docker cp ./dump.rdb <new_redis_container>:/data/dump.rdb
配置主从复制:
# 在从Redis容器中执行
redis-cli
REPLICAOF <master_ip> 6379
或在启动时配置:
docker run --name redis-replica -d redis redis-server --replicaof <master_ip> 6379
导出数据:
# 导出所有键
redis-cli --raw DUMP "$(redis-cli KEYS '*')" > redis_dump.rdb
导入数据:
cat redis_dump.rdb | redis-cli -x RESTORE
bash
npm install -g redis-dump
redis-dump -u redis://<host>:<port> > data.json
redis-load -u redis://<new_host>:<new_port> < data.json
# 1. 停止Redis写入(可选)
docker exec -it redis-container redis-cli CONFIG SET appendonly no
docker exec -it redis-container redis-cli SAVE
# 2. 复制RDB文件
docker cp redis-container:/data/dump.rdb .
# 3. 启动新Redis容器
docker run --name new-redis -p 6380:6379 -d redis
# 4. 停止新Redis
docker stop new-redis
# 5. 复制RDB文件到新容器
docker cp ./dump.rdb new-redis:/data/dump.rdb
# 6. 启动新Redis
docker start new-redis
选择哪种方法取决于您的具体需求和环境设置。对于生产环境,建议使用Redis内置的复制功能(RDB/AOF或主从复制)以确保数据一致性。