12、Docker Compose 安装 Redis

🚀CentOS 9 下使用 Docker Compose 安装 Redis(覆盖 99% 使用场景)详解教程

标签:Redis、CentOS9、Docker、Docker Compose、Redis Desktop Manager、持久化、集群配置、CSDN 优质文章


🧠 一、前言

Redis 作为高性能的 键值对存储数据库 ,在缓存、排行榜、消息队列、实时计算等场景广泛使用。本文将以 CentOS 9 + Docker Compose 为基础,带你一步步部署生产级 Redis 实例,兼容99% Redis 使用场景,并集成可视化工具 RedisInsight,实现可视化管理、持久化存储、密码安全、端口映射等功能。


🛠️ 二、环境准备

✅ 系统环境

项目 版本
操作系统 CentOS Stream 9
Docker 24.x 以上
Docker Compose v2.x
Redis 镜像 redis:7.2
可视化工具 Redis Desktop Manager(Web UI)

📦 三、Docker Compose 安装 Redis

1️⃣ 创建项目目录结构

bash 复制代码
mkdir -p /etc/docker/docker-redis/data
mkdir -p /etc/docker/docker-redis/conf
cd /etc/docker/docker-redis

2️⃣ 创建 redis.conf 配置文件

conf/redis.conf 中写入以下配置,开启持久化、设置密码:

bash 复制代码
# 文件:/etc/docker/docker-redis/conf/redis.conf
bind 0.0.0.0
port 6379
requirepass 123456
appendonly yes
protected-mode yes
databases 16

✅ 说明:

  • appendonly yes 开启 AOF 持久化
  • requirepass 设置访问密码
  • protected-mode 防止外部非授权访问

3️⃣ 编写 docker-compose.yml

yaml 复制代码
version: '3.8'

services:
  redis:
    image: redis:7.2
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - ./data:/data
      - ./conf/redis.conf:/etc/docker/docker-redis/conf/redis.conf
    command: ["redis-server", "/etc/docker/docker-redis/conf/redis.conf"]

以下是您提供的 docker-compose.yml 文件中每一行的详细中文表格解释

🧾 Docker Compose 配置逐行解析表格(版本 3.8
行号 配置项 含义/说明
1 version: '3.8' 指定 Docker Compose 的版本,3.8 是兼容 Docker 19.03+ 的推荐版本,适用于生产环境。
3 services: 定义要部署的服务集合。

🧱 Redis 服务配置解释
行号 配置项 含义/说明
4 redis: Redis 服务名称,用作容器标识和网络别名。
5 image: redis:7.2 指定使用 Redis 官方镜像,版本为 7.2。
6 container_name: redis 指定容器名称为 redis,方便使用 docker ps 查看。
7 restart: always 容器异常退出后自动重启,保证服务高可用。
8 ports: 宿主机与容器的端口映射配置。
9 - "6379:6379" 将宿主机的 6379 端口映射到容器的 6379 端口(Redis 默认端口)。
10 volumes: 映射宿主机与容器的文件目录,实现数据和配置的持久化。
11 - ./data:/data 宿主机当前目录的 ./data 映射到容器内 Redis 数据目录 /data,用于 AOF/RDB 持久化文件保存。
12 - ./conf/redis.conf:/etc/docker/docker-redis/conf/redis.conf 将自定义 Redis 配置文件挂载到容器内部,路径保持一致以便命令行加载。
13 command: ["redis-server", "/etc/docker/docker-redis/conf/redis.conf"] 使用自定义配置文件启动 Redis 服务器。

📌 总结说明
服务 功能 对外端口 数据持久化 配置方式 可视化支持
redis 核心数据库服务 6379 ./data:/data ./conf/redis.conf ✔️

🚀 四、启动 Redis 服务

bash 复制代码
cd /etc/docker/docker-redis
docker compose up -d

查看服务状态:

bash 复制代码
docker ps

🔍 五、连接测试

✅ CLI 方式

bash 复制代码
docker exec -it redis redis-cli -a 123456

输出示例:

bash 复制代码
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name "Redis Docker"
OK
127.0.0.1:6379> get name
"Redis Docker"

🌐 六、可视化管理工具 Redis Desktop Manager(RDM)

1️⃣ 添加 Redis 连接

下载地址

  • Host: 你的服务器 IP
  • Port: 6379
  • Auth: yourStrongPassword
  • Name: 连接名称

连接成功后即可管理 Redis 数据。


🧪 七、持久化验证

1️⃣ 添加数据

bash 复制代码
127.0.0.1:6379> set demo "persist test"

2️⃣ 重启 Redis 容器

bash 复制代码
docker restart redis

3️⃣ 再次连接并验证

bash 复制代码
127.0.0.1:6379> get demo
"persist test"

✅ 成功说明 AOF 持久化正常


🔒 八、安全加固建议

项目 建议
密码 使用复杂密码,避免弱口令
防火墙 限制 Redis 端口访问,仅允许内网
TLS 生产环境推荐启用 Redis TLS 加密
配置文件 不暴露 redis.conf,加入访问控制

🔄 九、常见 Redis 用法(覆盖 99% 场景)

🌟 字符串

bash 复制代码
SET key value
GET key
INCR counter

🌟 哈希

bash 复制代码
HSET user:1 name "Tom"
HGET user:1 name

🌟 列表

bash 复制代码
LPUSH messages "hello"
LRANGE messages 0 -1

🌟 集合

bash 复制代码
SADD tags redis docker
SMEMBERS tags

🌟 有序集合

bash 复制代码
ZADD scores 100 "Alice" 95 "Bob"
ZRANGE scores 0 -1 WITHSCORES

🌟 过期设置

bash 复制代码
SETEX token 300 "abc123"
TTL token

🌟 发布订阅

bash 复制代码
SUBSCRIBE news
PUBLISH news "Redis is awesome!"

🧹 十、停止与清理

停止服务

bash 复制代码
docker compose down

删除数据

bash 复制代码
rm -rf /etc/docker/docker-redis/data/*

📌 十一、总结

通过本教程,你已经成功:

  • 在 CentOS 9 上通过 Docker Compose 部署了生产可用的 Redis 实例;
  • 实现了密码保护、AOF 持久化;
  • Redis Desktop Manager可视化工具;
  • 掌握了 Redis 高频命令与使用场景;
  • 提升了 Redis 安全性。

📚 附录:参考资料

相关推荐
学Linux的语莫4 小时前
docker,docker-compose二进制包安装
docker
_oP_i5 小时前
Docker 整体架构
docker·容器·架构
杨浦老苏5 小时前
可视化服务构建器Dock-Dploy
docker·工具·群晖
落世繁华6 小时前
DIFY合同生成全流程开发实践(三、后端接口以及优化方向)
docker·一键部署·dify·合同生成·文字转word
嘻哈baby6 小时前
Redis高可用部署与集群管理实战
数据库·redis·bootstrap
ascarl20106 小时前
Kubernetes 环境 NFS 卡死问题排查与解决纪要
云原生·容器·kubernetes
Java爱好狂.8 小时前
Java面试Redis核心知识点整理!
java·数据库·redis·分布式锁·java面试·后端开发·java八股文
阿杆9 小时前
如何在 Spring Boot 中接入 Amazon ElastiCache
java·数据库·redis
m0_569531019 小时前
《K8s 网络入门到进阶:Service 与 Ingress 原理、部署方案及核心区别对比》
网络·容器·kubernetes
wxjlkh9 小时前
docker 搭建 grafana+prometheus 监控主机资源之node_exporter
docker·grafana·prometheus