Docker Compose企业实战系列(四):Redis生产级部署|密码加固、持久化、内存优化完整方案

Docker Compose企业实战系列(四):Redis生产级部署|密码加固、持久化、内存优化完整方案

前言

前三篇我们完成了:LNMP环境、SpringBoot后端、Vue前端全套容器化部署。

在前后端项目中,Redis 承担缓存、会话、限流、热点数据、分布式锁等核心功能。

很多人 Compose 部署的 Redis 都是"开发裸奔版":

  • 无密码、公网可直接连接

  • 不做持久化,重启数据全丢

  • 不限制内存,导致服务器内存打满

  • 无淘汰策略,缓存雪崩、内存溢出

本篇直接给大家一套可直接上线的 Redis 生产级 Compose 模板:密码安全 + 双持久化 + 内存限制 + LRU淘汰 + 日志规范,零废话、全落地。

一、生产 Redis 必须具备的 4 个条件

不满足下面四条,一律不允许上生产:

  1. 开启密码认证,禁止空密码裸奔

  2. 开启AOF持久化,保证重启不丢数据

  3. 限制最大内存,防止Redis吃光服务器资源

  4. 配置内存淘汰策略,避免缓存溢出

二、完整目录结构

plain 复制代码
full-stack-docker/
├── .env
├── docker-compose.yml
├── app/                # SpringBoot后端
├── web/                # Vue前端
├── mysql/
│   └── data/
└── redis/
    └── data/           # Redis持久化数据目录

三、.env 环境变量配置

统一管理密码与版本,避免硬编码,直接复制:

env 复制代码
# MySQL
MYSQL_ROOT_PASSWORD=root123456
MYSQL_DATABASE=spring_db
MYSQL_USER=appuser
MYSQL_PASSWORD=app123456

# Redis 生产核心配置
REDIS_PASSWORD=Redis@2026
REDIS_MAX_MEMORY=256mb

# 镜像版本
MYSQL_VERSION=8.0
REDIS_VERSION=7.2-alpine

四、生产级 Redis Compose 完整配置(核心)

这是最终上线版本 ,整合所有生产优化,直接覆盖你的docker-compose.yml:

yaml 复制代码
version: '3.8'

services:
  # MySQL 保持不变
  mysql:
    image: mysql:${MYSQL_VERSION}
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    restart: always
    networks:
      - full-net

  # Redis 生产级配置(本篇重点)
  redis:
    image: redis:${REDIS_VERSION}
    ports:
      - "6379:6379"
    volumes:
      - ./redis/data:/data
    # 生产核心启动参数
    command: >
      redis-server
      --requirepass ${REDIS_PASSWORD}
      --appendonly yes
      --maxmemory ${REDIS_MAX_MEMORY}
      --maxmemory-policy allkeys-lru
      --databases 16
    restart: always
    networks:
      - full-net

  # SpringBoot后端
  springboot-service:
    build: ./app
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis
    restart: always
    networks:
      - full-net

  # Vue前端
  web:
    build: ./web
    ports:
      - "80:80"
    depends_on:
      - springboot-service
    restart: always
    networks:
      - full-net

networks:
  full-net:
    driver: bridge

五、逐条讲解生产核心参数(看懂就不会踩坑)

1. --requirepass 密码

强制密码登录,杜绝公网裸奔攻击。

生产红线:绝对不允许空密码 Redis 暴露端口。

2. --appendonly yes(AOF持久化)

记录每一条写入命令,容器重启、宕机恢复数据不丢失。

默认关闭,关闭后重启所有缓存清空,生产必开。

3. --maxmemory 内存限制

限制 Redis 最大占用内存,示例 256mb,根据服务器配置自行调整。

防止缓存无限新增、内存溢出、打满服务器导致整机卡顿。

4. --maxmemory-policy allkeys-lru

生产最优选淘汰策略:优先淘汰最近最少使用的缓存,保证热点数据常驻内存。

完美适配业务缓存场景,有效避免缓存雪崩。

5. --databases 16

开启16个数据库,兼容日常业务分库使用。

六、SpringBoot 适配生产 Redis 配置

你的application.yml 直接复制,适配密码+远程容器网络:

yaml 复制代码
spring:
  redis:
    host: redis
    port: 6379
    password: ${REDIS_PASSWORD:Redis@2026}
    database: 0
    timeout: 10000ms
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 2

重点:Compose 同一网络直接使用 服务名 redis 通信,不需要 IP。

七、启动与验证命令

1. 重启服务生效配置

bash 复制代码
docker compose up -d --build

2. 进入 Redis 验证密码与持久化

bash 复制代码
# 进入redis客户端
docker exec -it 容器名 redis-cli

# 认证密码
AUTH Redis@2026

# 写入测试数据
set test_key 123456

# 退出重启容器后再次查看,数据依旧存在

八、生产环境安全避坑(必看)

  • 禁止公网直接暴露6379端口:高危漏洞,极易被挖矿攻击

  • 密码必须复杂:杜绝 123456、root 等弱密码

  • 必须开启AOF持久化:开发可关,生产必开

  • 必须限制内存:防止OOM拖垮服务器

  • 不要随意使用flushall:生产误删无法恢复

九、本篇总结

本篇完成了 Redis 完整生产级容器化部署,彻底告别开发裸奔配置:

  • ✅ 密码安全加固,杜绝裸奔攻击

  • ✅ AOF持久化,重启数据不丢

  • ✅ 内存上限控制,保护服务器资源

  • ✅ LRU淘汰策略,适配真实业务缓存

现在你的整套前后端项目:Nginx前端 + SpringBoot后端 + MySQL数据 + Redis缓存 全部达到可上线标准。

下期预告

Docker Compose企业实战系列(五):Nginx反向代理与负载均衡实战

手把手配置域名代理、跨域统一处理、多服务负载均衡、静态缓存优化,完成企业级网关配置。

相关推荐
troy1281 小时前
如何在谷歌云(Google Cloud)上部署 Kubernetes 集群
云原生·容器·kubernetes
小白的码BUG之路1 小时前
Docker -- 构建nginx镜像,启动vue项目
vue.js·nginx·docker
guo_wen_qiang1 小时前
docker安装常见软件集合
运维·docker·容器
喜欢的名字被抢了2 小时前
08-Redis 性能优化篇:快在哪、BigKey、HotKey、慢查询与内存
数据库·redis·性能优化
青山木2 小时前
秒杀系统设计(一):需求拆解与流量治理
java·数据库·redis·后端·架构
程序员清风12 小时前
Docker、Nginx 与 Kubernetes 部署 AI 后端服务
nginx·docker·kubernetes
hweiyu0013 小时前
Redis命令:HMGET
redis·缓存
Zhu75813 小时前
离线二进制部署-Kubernetes-v1.36.4
容器·贪心算法·kubernetes