使用 Docker 部署 Redis 并配置持久化与密码保护
本文将详细介绍如何使用 Docker 部署 Redis,并通过 redis.conf
配置文件实现数据持久化和密码保护。适合在生产环境中使用。
1. 准备工作
1.1 安装 Docker
确保已安装 Docker。如果未安装,请参考以下命令:
-
Ubuntu/Debian:
sudo apt-get update sudo apt-get install docker.io
-
CentOS/Fedora:
sudo yum install docker
-
macOS/Windows:
下载并安装 Docker Desktop。
安装完成后,启动 Docker 服务:
sudo systemctl start docker
sudo systemctl enable docker
2. 创建 Redis 目录和配置文件
2.1 创建目录
在 /home/middleware/redis
下创建 data
目录用于存放 Redis 数据,并创建 redis.conf
配置文件:
mkdir -p /home/middleware/redis/data
touch /home/middleware/redis/redis.conf
2.2 编辑配置文件
编辑 redis.conf
文件,添加以下内容:
bind 0.0.0.0
port 6379
dir /data
dbfilename dump.rdb
# 设置 Redis 密码
requirepass yourpassword # RDB 持久化配置# 900 秒(15 分钟)内至少有 1 个键被修改时触发保存
save 900 1 # 300 秒(5 分钟)内至少有 10 个键被修改时触发保存
save 300 10 # 60 秒(1 分钟)内至少有 10000 个键被修改时触发保存
save 60 10000
bind 0.0.0.0
:允许所有 IP 连接。port 6379
:Redis 服务端口。dir /data
:数据存储目录。dbfilename dump.rdb
:数据文件名。requirepass yourpassword
:设置 Redis 密码(将yourpassword
替换为你的密码)。save
:配置 RDB 持久化规则(详见下文解释)。
2.3 save
指令详解
save
指令用于配置 Redis 的 RDB 持久化策略。它的语法如下:
save <seconds> <changes>
<seconds>
:时间间隔(秒)。<changes>
:在指定时间间隔内,如果数据发生了至少<changes>
次修改,则触发保存。
示例解释
在配置文件中:
save 900 1
save 300 10
save 60 10000
-
save 900 1
- 如果 900 秒(15 分钟) 内,至少有 1 个键 被修改,则触发保存。
-
save 300 10
- 如果 300 秒(5 分钟) 内,至少有 10 个键 被修改,则触发保存。
-
save 60 10000
- 如果 60 秒(1 分钟) 内,至少有 10000 个键 被修改,则触发保存。
为什么需要多个 save
规则?
多个 save
规则可以平衡 数据安全性 和 性能:
- 频繁保存(如
save 60 10000
):确保数据丢失的风险最小化,但可能会影响性能,因为频繁的磁盘写入会增加 I/O 负载。 - 较少保存(如
save 900 1
):减少磁盘 I/O,但可能会增加数据丢失的风险。
通过组合多个规则,Redis 可以在不同场景下灵活地触发数据保存。
3. 使用 Docker 运行 Redis
3.1 拉取 Redis 镜像
从 Docker Hub 拉取 Redis 官方镜像:
docker pull redis
3.2 启动 Redis 容器
运行以下命令启动 Redis 容器,并挂载配置文件和数据目录:
docker run --name redis -d \-p 6379:6379 \-v /home/middleware/redis/data:/data \-v /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf \redis redis-server /usr/local/etc/redis/redis.conf
--name redis
:容器命名为redis
。-d
:后台运行容器。-p 6379:6379
:将主机的 6379 端口映射到容器的 6379 端口。-v /home/middleware/redis/data:/data
:挂载数据目录。-v /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf
:挂载配置文件。redis redis-server /usr/local/etc/redis/redis.conf
:使用自定义配置文件启动 Redis。
4. 验证 Redis 部署
4.1 检查容器状态
运行以下命令,查看容器是否正常运行:
docker ps
4.2 连接 Redis
使用 redis-cli
连接 Redis,并验证密码:
docker exec -it redis redis-cli
在 Redis CLI 中执行以下命令进行认证:
AUTH yourpassword
认证成功后,可以执行 Redis 命令,例如:
SET mykey "Hello, Redis!"
GET mykey
4.3 验证数据持久化
停止并重新启动 Redis 容器:
docker stop redis
docker start redis
再次连接 Redis,检查数据是否仍然存在:
docker exec -it redis redis-cli
AUTH yourpassword
GET mykey
5. 使用 Docker Compose(可选)
如果你更喜欢使用 Docker Compose 管理 Redis 容器,可以创建 docker-compose.yml
文件:
version: '3'
services:redis:image: rediscontainer_name: redisports:- "6379:6379"volumes:- /home/middleware/redis/data:/data- /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.confcommand: redis-server /usr/local/etc/redis/redis.conf
然后运行以下命令启动服务:
docker-compose up -d
停止服务:
docker-compose down
6. 目录结构
最终的 /home/middleware/redis
目录结构如下:
/home/middleware/redis/
├── data/ # Redis 持久化数据目录
│ └── dump.rdb # Redis 数据文件
└── redis.conf # Redis 配置文件
7. 总结
通过以上步骤,你已经成功使用 Docker 部署了 Redis,并通过 redis.conf
配置文件实现了数据持久化和密码保护。本文还详细解释了 save
指令的作用和配置方法,帮助你根据业务需求灵活调整持久化策略。
如果有任何问题,欢迎在评论区留言!
参考文档
- Redis 官方文档
- Docker 官方文档