Docker 安装 Redis 并实现持久化

发布于:2025-07-07 ⋅ 阅读:(16) ⋅ 点赞:(0)

在 Docker 中安装 Redis 并实现持久化,需通过卷挂载(Volume Mount)将容器内的数据目录映射到主机,同时需在 Redis 配置文件中启用持久化选项(AOF 或 RDB)。以下是详细步骤和配置说明:

一、核心步骤

  1. 创建本地数据和配置目录
    在主机上创建目录用于存储 Redis 数据和配置文件(例如 /data/redis):

     

    bash

    mkdir -p /data/redis/data # 存储持久化文件(RDB/AOF)
    mkdir -p /data/redis/conf # 存储 Redis 配置文件
  2. 获取 Redis 配置文件
    从 Redis 官方仓库下载与镜像版本匹配的 redis.conf 文件,或手动创建并编辑以下关键配置:

     

    ini

    # 开启 AOF 持久化(推荐)
    appendonly yes
    appendfilename "appendonly.aof"
    appendfsync everysec # 每秒同步一次,平衡性能与数据安全
    # 或开启 RDB 持久化(二选一)
    save 900 1 # 900 秒内至少 1 个 key 变化则触发快照
    save 300 10 # 300 秒内至少 10 个 key 变化则触发快照
    save 60 10000 # 60 秒内至少 10000 个 key 变化则触发快照
    dbfilename dump.rdb # RDB 文件名
    # 其他必要配置
    bind 0.0.0.0 # 允许所有 IP 连接(生产环境需限制)
    protected-mode no # 关闭保护模式(需配合密码使用)
    requirepass yourpassword # 设置密码(必填)
  3. 运行 Redis 容器并挂载卷
    使用 -v 参数将主机目录挂载到容器,并指定配置文件:

     

    bash

    docker run -d \
    --name redis-persistent \
    -p 6379:6379 \
    -v /data/redis/data:/data \
    -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
    redis:7.0.4 \
    redis-server /usr/local/etc/redis/redis.conf

    参数说明

    • -v /data/redis/data:/data:将容器内的 /data 目录(存储 RDB/AOF 文件)映射到主机。
    • -v /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf:挂载自定义配置文件。
    • redis-server /usr/local/etc/redis/redis.conf:指定容器启动时使用的配置文件路径。

二、持久化方案对比

方案 原理 配置项 适用场景
AOF 记录所有写操作命令,重启后重放命令恢复数据 appendonly yes 数据安全性要求高,允许少量性能损耗
RDB 定期生成内存快照到磁盘 save 900 1 等 数据备份、灾难恢复,对性能影响较小
混合 AOF 记录增量数据 + RDB 定期快照 同时启用 AOF 和 RDB 平衡安全性与性能(Redis 4.0+ 支持)

推荐配置

  • 生产环境:启用 AOF(appendonly yes)并设置 appendfsync everysec,同时定期备份 RDB 文件。
  • 测试环境:可仅启用 RDB 以简化配置。

三、验证持久化

  1. 写入测试数据

     

    bash

    docker exec -it redis-persistent redis-cli -a yourpassword
    127.0.0.1:6379> SET test_key "Hello, Redis!"
    127.0.0.1:6379> EXIT
  2. 检查持久化文件
    在主机 /data/redis/data 目录下应生成 appendonly.aof(AOF 启用时)或 dump.rdb(RDB 启用时)。

  3. 重启容器并验证数据

     

    bash

    docker restart redis-persistent
    docker exec -it redis-persistent redis-cli -a yourpassword
    127.0.0.1:6379> GET test_key # 应返回 "Hello, Redis!"

四、高级优化

  1. 性能调优
    • AOF 配置 appendfsync everysec 而非 always,减少磁盘 I/O 压力。
    • 使用 SSD 存储持久化文件目录。
  2. 安全加固
    • 限制 Redis 绑定 IP(如 bind 192.168.1.100)。
    • 启用 TLS 加密(需额外配置证书)。
  3. 集群部署
    若需高可用,可结合 Redis Sentinel 或 Cluster 模式,并确保每个节点的持久化配置一致。

五、常见问题

  1. 权限错误
    若容器启动失败并提示 Permission denied,确保主机目录权限正确:

     

    bash

    chown -R 999:999 /data/redis/data # Redis 容器默认用户 UID/GID 为 999
  2. 配置不生效
    检查容器内是否实际加载了自定义配置文件:

     

    bash

    docker exec -it redis-persistent cat /usr/local/etc/redis/redis.conf
  3. 数据未持久化

    • 确认 appendonly yes 或 save 规则已正确配置。
    • 检查主机目录是否写入成功(如 ls /data/redis/data)。


网站公告

今日签到

点亮在社区的每一天
去签到