Docker之Redis部署
Docker之Redis部署:高性能内存数据库
核心部署命令
docker run -d \
--restart=always \
-v /home/redis/redis.conf:/usr/local/etc/redis/redis.conf \
--name redis \
-p 6379:6379 \
192.168.254.130:5000/redis \
redis-server /usr/local/etc/redis/redis.conf \
--requirepass 123456
参数详解
关键配置项
参数 | 说明 | 必要性 |
---|---|---|
-v /home/redis/redis.conf | 挂载自定义配置文件 | 强烈推荐 |
--requirepass 123456 | 设置访问密码 | 生产环境必选 |
--restart=always | 自动重启策略 | 生产环境建议 |
-p 6379:6379 | 默认服务端口 | 可修改前端口 |
配置文件详解(redis.conf)
基础配置
# 内存限制策略(4GB内存)
maxmemory 4096mb
maxmemory-policy allkeys-lru
# 安全配置
requirepass 123456 # 与docker参数二选一
bind 0.0.0.0 # 允许远程访问
# 持久化配置
appendonly yes # 启用AOF持久化
appendfsync everysec
生产环境推荐配置
# 连接限制
maxclients 10000
tcp-backlog 511
timeout 300
# 性能优化
stop-writes-on-bgsave-error no
rdbcompression yes
部署流程
准备配置文件:
mkdir -p /home/redis vi /home/redis/redis.conf
启动容器:
# 使用上文完整run命令
验证部署:
docker exec -it redis redis-cli 127.0.0.1:6379> AUTH 123456 127.0.0.1:6379> INFO memory
数据持久化方案
1. 挂载数据目录(推荐)
-v /home/redis/data:/data
2. 备份策略
# 手动执行RDB快照
docker exec redis redis-cli -a 123456 SAVE
# 自动备份(crontab示例)
0 2 * * * docker exec redis redis-cli -a 123456 BGSAVE
性能监控命令
# 实时监控
docker exec -it redis redis-cli -a 123456 --stat
# 内存分析
docker exec -it redis redis-cli -a 123456 --bigkeys
# 慢查询日志
docker exec -it redis redis-cli -a 123456 SLOWLOG GET
安全加固建议
修改默认端口:
-p 6380:6379 # 对外暴露6380端口
禁用危险命令:
rename-command FLUSHALL "" rename-command CONFIG ""
网络隔离:
--network my_private_network
常见问题解决
Q:内存不足报错?
# 调整内存策略
maxmemory-policy volatile-lru
Q:连接数过多?
# 查看连接列表
docker exec redis redis-cli -a 123456 CLIENT LIST
# 释放空闲连接
docker exec redis redis-cli -a 123456 CLIENT KILL TYPE idle
Q:数据恢复方法?
# 将dump.rdb文件放入/data目录
docker cp dump.rdb redis:/data/
docker restart redis
版本升级方案
停止旧容器并备份数据:
docker exec redis redis-cli -a 123456 SAVE cp /home/redis/data/dump.rdb /backup/
启动新版本容器(使用相同数据目录):
docker run ... 192.168.254.130:5000/redis:新版本 ...
此部署方式:
- 密码保护的安全Redis实例
- 可配置的内存淘汰策略
- 持久化数据保障
- 易于管理的容器化服务
提示:使用redis-benchmark
工具进行压力测试:docker exec redis redis-benchmark -a 123456 -n 100000 -c 50