☰
Docker Compose企业实战系列(四):Redis生产级部署|密码加固、持久化、内存优化完整方案
2026/10/2 17:22:52 网站建设 项目流程

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

前言

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、完整目录结构

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

三、.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:

version:'3.8'services:# MySQL 保持不变mysql:image:mysql:${MYSQL_VERSION}ports:-"3306:3306"volumes:-./mysql/data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD:${MYSQL_ROOT_PASSWORD}MYSQL_DATABASE:${MYSQL_DATABASE}MYSQL_USER:${MYSQL_USER}MYSQL_PASSWORD:${MYSQL_PASSWORD}restart:alwaysnetworks:-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 16restart:alwaysnetworks:-full-net# SpringBoot后端springboot-service:build:./appports:-"8080:8080"depends_on:-mysql-redisrestart:alwaysnetworks:-full-net# Vue前端web:build:./webports:-"80:80"depends_on:-springboot-servicerestart:alwaysnetworks:-full-netnetworks: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直接复制,适配密码+远程容器网络:

spring:redis:host:redisport:6379password:${REDIS_PASSWORD:Redis@2026}database:0timeout:10000mslettuce:pool:max-active:8max-idle:8min-idle:2

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

七、启动与验证命令

1. 重启服务生效配置

dockercompose up-d--build

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

# 进入redis客户端dockerexec-it容器名 redis-cli# 认证密码AUTH Redis@2026# 写入测试数据settest_key123456# 退出重启容器后再次查看,数据依旧存在

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

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

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

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

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

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

九、本篇总结

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

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

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

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

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

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

下期预告

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询