Skip to main content

Docker 部署 Redis

快速启动

# 基本运行
docker run -d --name redis -p 6379:6379 redis:7-alpine

# 带数据持久化
docker run -d \
--name redis \
-p 6379:6379 \
-v redis_data:/data \
redis:7-alpine redis-server --appendonly yes

Docker Compose 部署

version: '3.8'

services:
redis:
image: redis:7-alpine
container_name: redis
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data
command: redis-server --appendonly yes

volumes:
redis_data:

自定义配置

redis.conf

# 网络配置
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511

# 内存配置
maxmemory 2gb
maxmemory-policy allkeys-lru

# 持久化配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

save 900 1
save 300 10
save 60 10000

# 慢查询日志
slowlog-log-slower-than 10000
slowlog-max-len 128

# 密码
requirepass your_password

# 禁用危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""

常用命令

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

# 查看信息
docker exec redis redis-cli INFO
docker exec redis redis-cli INFO stats

# 查看键
docker exec redis redis-cli KEYS "*"
docker exec redis redis-cli DBSIZE

# 监控命令
docker exec redis redis-cli MONITOR

# 备份
docker exec redis redis-cli SAVE
docker exec redis redis-cli BGSAVE

主从复制

version: '3.8'

services:
redis-master:
image: redis:7-alpine
container_name: redis-master
ports:
- "6379:6379"
volumes:
- redis_master_data:/data
command: redis-server --appendonly yes

redis-slave:
image: redis:7-alpine
container_name: redis-slave
ports:
- "6380:6379"
volumes:
- redis_slave_data:/data
command: redis-server --slaveof redis-master 6379 --appendonly yes
depends_on:
- redis-master

volumes:
redis_master_data:
redis_slave_data:

Redis Cluster

version: '3.8'

services:
redis-1:
image: redis:7-alpine
command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7001:6379"
volumes:
- redis_1:/data

redis-2:
image: redis:7-alpine
command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7002:6379"
volumes:
- redis_2:/data

redis-3:
image: redis:7-alpine
command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
ports:
- "7003:6379"
volumes:
- redis_3:/data

volumes:
redis_1:
redis_2:
redis_3:

最佳实践

最佳实践
  • ✅ 使用密码保护 Redis
  • ✅ 限制最大内存使用
  • ✅ 启用持久化(AOF + RDB)
  • ✅ 禁用危险命令
  • ✅ 监控内存使用率
  • ✅ 使用连接池
  • ✅ 设置合理的超时时间

相关资源