使用 Docker 安装 Redis 的完整指南
更新说明:本文基于Redis 8.0.2稳定版本,通过Docker容器技术实现快速部署,重点讲解配置文件优化与安全加固方案,适用于生产环境部署参考。
一、环境准备
1.1 系统要求
- Linux系统(CentOS 7+/Ubuntu 20.04+)
- Docker 20.10.0+
- Docker Compose 1.29.0+
1.2 软件版本
- Redis: 6.2.6
- 持久化存储:AOF + RDB混合模式
- 安全策略:密码认证 + 防火墙限制
二、部署流程
2.1 拉取官方镜像
# 拉取指定版本镜像
docker pull redis:8.0.2
# 验证镜像
docker images -a
# 输出示例:
# REPOSITORY TAG IMAGE ID CREATED SIZE
# redis 8.0.2 7614ae9453d1 23 months ago 113MB
2.2 创建配置体系
目录结构规划
mkdir -p /data/dockerData/redis/{conf,data,logs}
touch /data/dockerData/redis/conf/redis.config
配置文件详解(redis.config)
# Redis服务器配置
# 绑定IP地址
#解除本地限制 注释bind 127.0.0.1
#bind 127.0.0.1
# 服务器端口号
port 6379
#配置密码,不要可以删掉
requirepass syf133618
#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid
#默认为no,redis持久化,可以改为yes
appendonly yes
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300
#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000
# 按需求调整 Redis 线程数
tcp-backlog 511
# 设置数据库数量,这里设置为16个数据库
databases 16
# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128
# 是否记录系统日志,默认为yes
syslog-enabled yes
#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice
# 日志输出文件,默认为stdout,也可以指定文件路径
logfile stdout
# 日志文件
#logfile /var/log/redis/redis-server.log
# 系统内存调优参数
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
2.2启动容器服务
完整部署命令
docker run
-p 6379:6379
--name redis
-v /data/dockerData/redis/conf/redis.config:/etc/redis/redis.conf
-v /data/dockerData/redis/data:/data
-v /data/dockerData/redis/logs:/logs
-d
redis:8.0.2
redis-server /etc/redis/redis.conf
参数解析:
| 参数 | 作用 |
|---|---|
-d | 后台运行 |
--privileged | 赋予容器特权模式 |
-p | 端口映射 |
-v | 卷挂载(配置/数据/日志) |
--restart=always | 自动重启策略 |
三、验证与调试
3.1 容器状态检查
# 查看运行状态
docker ps -a
# 输出示例:
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
# a34aff536643 redis:8.0.2 "docker-entrypoint.s…" 59 seconds ago Up 58 seconds 6379/tcp 6379/tcp
3.2 客户端连接测试
# 进入容器
docker exec -it redis bash
# 启动客户端
redis-cli
# 认证操作
127.0.0.1:6379> AUTH yourPassWord
OK
# 测试写入
127.0.0.1:6379> SET test_key "Hello Redis"
OK
# 验证读取
127.0.0.1:6379> GET test_key
"Hello Redis"
四、安全加固
4.1 防火墙配置
# 开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
# 验证开放
firewall-cmd --list-all | grep ports
4.2 访问控制
- 网络层:阿里云/腾讯云控制台限制IP白名单
- 应用层:通过
bind指令限制监听地址 - 认证层:强制密码验证+命令重命名
五、常见问题排查
5.1 启动失败解决方案
# 查看容器日志
docker logs redis --tail 50
# 常见错误及处理:
1. 配置文件路径错误 → 检查-v参数映射
2. 端口冲突 → 修改-p参数端口号
3. 权限不足 → 添加--privileged参数
5.2 内存溢出处理
-
监控
used_memory指标 -
优化
maxmemory-policy策略 -
使用Redis Cluster分片集群六、性能优化建议
六、性能优化建议
| 优化维度 | 推荐方案 |
|---|---|
| 内存管理 | 启用maxmemory+合适的淘汰策略 |
| 持久化 | AOF+RDB混合模式 |
| 连接池 | 客户端设置合理超时时间 |
| 网络 | 使用Pipeline批量操作 |
| 监控 | 集成Prometheus+Grafana |
七、扩展部署方案
7.1 主从复制架构
# 从节点配置片段
slaveof 6379
masterauth yourpossword
7.2 高可用集群
使用Docker Compose部署3节点集群:
version: '3'
services:
redis-node-1:
image: redis:8.0.2
ports:
- "6380:6379"
command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000
扩展阅读:
- Redis官方文档

