如何设置运行在 Docker 中的 Redis 开启 RDB 落盘持久化
写这篇文章原因是某个开源系统将部分系统配置直接存在 Redis 中,由于 Redis 运行在 Docker 中,每次升级 Docker 或重启应用都会导致这部分系统配置丢失。所以研究了一下如何无缝开启 RDB 落盘持久化,这样重启数据就不会丢失,记录一下过程。
Redis 的数据落盘持久化分为两种 RDB 和 AOF,本次诉求简单,就采用轻量的 RDB。
保存运行在 Docker 中的 Redis 的数据
docker exec -it redis_server redis-cli BGSAVE
运行后等待 10 秒,会后台生成 /data/dump.rdb 备份文件。
创建备份目录并且利用 docker cp 命令把运行中 redis 容器内的备份文件复制出来:
mkdir -p /path/to/your/redis/data
docker cp redis_server:/data/dump.rdb /path/to/your/redis/data
修改 docker-compose.yml 文件
version: '3.8'
services:
redis:
image: redis:latest
container_name: redis_server
volumes:
- /path/to/your/redis/data:/data
ports:
- "6379:6379"
command: ["redis-server", "--save", "60", "1", "--dir", "/data"]
重点是 volumes: 和 command: ,其中 "--save", "60", "1" 表示每 60 秒,key 变动 1 次就更新一下备份文件。
重启服务
docker compose down
docker compose up -d
重启后就会发现 Redis 数据没有丢失。