使用Docker部署Redis并配置持久化与密码保护的详细步骤


    目录
  • 1. 准备工作
    • 1.1 安装 Docker
  • 2. 创建 Redis 目录和配置文件
    • 2.1 创建目录
    • 2.2 编辑配置文件
    • 2.3 save 指令详解
  • 3. 使用 Docker 运行 Redis
    • 3.1 拉取 Redis 镜像
    • 3.2 启动 Redis 容器
  • 4. 验证 Redis 部署
    • 4.1 检查容器状态
    • 4.2 连接 Redis
    • 4.3 验证数据持久化
  • 5. 使用 Docker Compose(可选)
  • 6. 目录结构
  • 7. 总结

    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

    

  1.     save 900 1
        
    • 如果 900 秒(15 分钟) 内,至少有 1 个键 被修改,则触发保存。

  2.     save 300 10
        
    • 如果 300 秒(5 分钟) 内,至少有 10 个键 被修改,则触发保存。

  3.     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: redis
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - /home/middleware/redis/data:/data
      - /home/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf
    command: 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 指令的作用和配置方法,帮助你根据业务需求灵活调整持久化策略。