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

 更新时间:2025年03月10日 09:10:25   作者:码上有潜  
本文将详细介绍如何使用 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
  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 指令的作用和配置方法,帮助你根据业务需求灵活调整持久化策略。

以上就是使用Docker部署Redis并配置持久化与密码保护的详细步骤的详细内容,更多关于Docker部署Redis持久化与密码保护的资料请关注脚本之家其它相关文章!

相关文章

  • 在Redis数据库中实现分布式速率限制的方法

    在Redis数据库中实现分布式速率限制的方法

    这篇文章主要介绍了在Redis数据库中实现分布式速率限制的方法,文中展示了一个用Python编写的应用示例,需要的朋友可以参考下
    2015-06-06
  • Redis主从+哨兵集群部署详解

    Redis主从+哨兵集群部署详解

    本文介绍Redis哨兵模式,实现主从节点自动监控与故障转移,确保高可用,详解部署主从及哨兵集群的配置与验证流程,注意事项包括主机名、IP映射和脚本区分
    2025-10-10
  • Redis+aop实现接口防刷(幂等)的解决方案

    Redis+aop实现接口防刷(幂等)的解决方案

    在高并发场景下,可能会因为网络或者服务器原因,造成延迟,同时就是有可能会有人用脚本大量访问你的接口,造成资源崩溃,所以本文给大家介绍了Redis+aop实现接口防刷(幂等)的解决方案,需要的朋友可以参考下
    2024-03-03
  • Redis实现分布式锁的实例讲解

    Redis实现分布式锁的实例讲解

    在本篇文章里小编给大家整理了一篇关于Redis实现分布式锁的实例讲解内容,有兴趣的朋友们可以学习参考下。
    2021-12-12
  • 一文详解如何停止/重启/启动Redis服务

    一文详解如何停止/重启/启动Redis服务

    Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统,这篇文章主要给大家介绍了关于如何停止/重启/启动Redis服务的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • redis集群搭建过程(非常详细,适合新手)

    redis集群搭建过程(非常详细,适合新手)

    这篇文章主要介绍了redis集群搭建过程,Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群,具体搭建过程跟随小编一起看看吧
    2021-11-11
  • Redis五种数据结构在JAVA中如何封装使用

    Redis五种数据结构在JAVA中如何封装使用

    本篇博文就针对Redis的五种数据结构以及如何在JAVA中封装使用做一个简单的介绍。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-11-11
  • redis如何实现保存对象

    redis如何实现保存对象

    这篇文章主要介绍了redis如何实现保存对象,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • redis内部数据结构之SDS简单动态字符串详解

    redis内部数据结构之SDS简单动态字符串详解

    SDS是Redis中实现的一种数据结构,用来存储字符串,最近学习中正好学习到了这里,所以下面这篇文章主要给大家介绍了redis内部数据结构之SDS简单动态字符串的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-11-11
  • Redis increment 函数处理并发序列号案例

    Redis increment 函数处理并发序列号案例

    这篇文章主要介绍了Redis increment 函数处理并发序列号案例,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08

最新评论