跳到主要内容

Docker 部署 Redis

Redis 是高性能的内存数据库,常用于缓存、会话存储、消息队列。

快速开始

单机部署

docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
redis:7-alpine \
redis-server --appendonly yes

带密码部署

docker run -d \
--name redis \
-p 6379:6379 \
-v redis-data:/data \
redis:7-alpine \
redis-server --appendonly yes --requirepass 123456

使用配置文件

1. 创建配置文件

mkdir -p /etc/redis/conf
cat > /etc/redis/conf/redis.conf << EOF
# 绑定地址
bind 0.0.0.0

# 端口
port 6379

# 密码
requirepass 123456

# 持久化
appendonly yes
appendfilename "appendonly.aof"

# 内存限制
maxmemory 1gb
maxmemory-policy allkeys-lru

# 日志
loglevel notice
logfile "/data/redis.log"
EOF

2. 启动容器

docker run -d \
--name redis \
-p 6379:6379 \
-v /etc/redis/conf/redis.conf:/etc/redis/redis.conf \
-v redis-data:/data \
redis:7-alpine \
redis-server /etc/redis/redis.conf

集群部署

Redis Sentinel(哨兵)

version: '3.8'

services:
redis-master:
image: redis:7-alpine
container_name: redis-master
ports:
- "6379:6379"
command: redis-server --appendonly yes --requirepass 123456

redis-slave1:
image: redis:7-alpine
container_name: redis-slave1
ports:
- "6380:6379"
command: redis-server --appendonly yes --requirepass 123456 --slaveof redis-master 6379

redis-slave2:
image: redis:7-alpine
container_name: redis-slave2
ports:
- "6381:6379"
command: redis-server --appendonly yes --requirepass 123456 --slaveof redis-master 6379

sentinel:
image: redis:7-alpine
container_name: redis-sentinel
ports:
- "26379:26379"
volumes:
- ./sentinel.conf:/etc/redis/sentinel.conf
command: redis-sentinel /etc/redis/sentinel.conf

Redis Cluster

version: '3.8'

services:
redis-node1:
image: redis:7-alpine
container_name: redis-node1
ports:
- "6379:6379"
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000

redis-node2:
image: redis:7-alpine
container_name: redis-node2
ports:
- "6380:6379"
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000

redis-node3:
image: redis:7-alpine
container_name: redis-node3
ports:
- "6381:6379"
command: redis-server --appendonly yes --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000

常用命令

# 连接 Redis
docker exec -it redis redis-cli -a 123456

# 查看信息
docker exec -it redis redis-cli -a 123456 INFO

# 查看内存
docker exec -it redis redis-cli -a 123456 INFO memory

# 查看连接数
docker exec -it redis redis-cli -a 123456 INFO clients

# 清空数据
docker exec -it redis redis-cli -a 123456 FLUSHALL

运维建议

建议说明
持久化启用 AOF 持久化
密码生产环境必须设置密码
内存限制设置 maxmemory 限制
备份定期备份数据
监控监控内存、连接数、命中率

故障排查

问题解决方案
连接失败检查端口、密码配置
内存不足增加 maxmemory 或清理数据
持久化失败检查磁盘空间
性能问题检查慢查询日志

相关文档