使用 Docker Compose 安装 Redis 详细步骤
1. 创建项目目录
创建 Redis 项目目录
mkdir /home/redis-docker && cd ~/redis-docker
创建必要的目录结构
cd /home
mkdir -p config data
2. 创建 docker-compose.yml 文件
tee docker-compose.yml <<-'EOF'
version: '3.8'
# 定义服务
services:
# Redis 主服务
redis:
# 使用官方 Redis 镜像的最新版本
image: redis:7.0
# 自定义容器名称
container_name: redis-server
# 端口映射:主机端口:容器端口
ports:
- "6379:6379"
# 挂载卷配置
volumes:
# 挂载 Redis 配置文件
- /home/config/redis.conf:/usr/local/etc/redis/redis.conf
# 挂载数据持久化目录
- /home/data:/data
# 挂载初始化脚本(可选)
- /home/init-scripts:/init-scripts
# 自定义 Redis 启动命令
command: redis-server /usr/local/etc/redis/redis.conf
# 环境变量(可选)
environment:
- REDIS_REPLICATION_MODE=master
# 重启策略
restart: unless-stopped
# 健康检查
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
start_period: 30s
# 网络配置
networks:
- redis-network
# 资源限制(可选)
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
# 定义命名卷(可选)
volumes:
redis-data:
driver: local
# 定义网络
networks:
redis-network:
driver: bridge
EOF
3. Redis 配置文件
tee config/redis.conf <<-'EOF'
# Redis 最简配置文件
# 网络配置
bind 0.0.0.0
port 6379
# 持久化
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# AOF 持久化
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# 基本设置
databases 16
maxclients 10000
timeout 0
tcp-keepalive 300
loglevel notice
# 内存优化
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
EOF
5. 启动 Redis 服务
启动服务(后台运行)
docker compose up -d
查看服务状态
docker compose ps
查看日志
docker compose logs -f
6. 验证 Redis 安装
连接到 Redis CLI:
进入 Redis 容器
docker exec -it redis-server redis-cli
或者直接连接
docker exec -it redis-server /bin/bash
在 Redis CLI 中测试:
测试连接
ping
应该返回 PONG
设置和获取键值
.set mykey "Hello Redis"
get mykey
应该返回 “Hello Redis”
查看服务器信息
info
查看配置
config get *
退出
exit
7. 常用管理命令
查看运行状态
docker compose ps
查看日志
docker compose logs redis
实时查看日志
docker compose logs -f redis
停止服务
docker compose down
停止服务并删除数据卷
docker compose down -v
重启服务
docker compose restart
查看资源使用情况
docker compose top
扩展服务(如果需要多个实例)
docker compose up -d --scale redis=2
8. Redis 性能调优配置示例
tee config/redis-performance.conf <<-'EOF'
# 高性能 Redis 配置
# 网络配置
bind 0.0.0.0
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
# 通用配置
daemonize no
loglevel warning
databases 16
# 持久化配置(根据需求选择)
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
rdbcompression yes
rdbchecksum yes
# AOF 配置(可选)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# 内存配置
maxmemory 1gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
# 客户端配置
maxclients 10000
# 性能优化
lazyfree-lazy-eviction yes
lazyfree-lazy-expire yes
lazyfree-lazy-server-del yes
replica-lazy-flush yes
# 其他优化
activerehashing no
hz 100
dynamic-hz no
EOF
9. 安全配置示例
tee config/redis-secure.conf <<-'EOF'
# 安全 Redis 配置
# 网络配置
bind 0.0.0.0
port 6379
tcp-backlog 511
timeout 300
tcp-keepalive 300
# 通用配置
daemonize no
loglevel notice
databases 16
# 设置密码保护
requirepass your_strong_password_here
# 重命名危险命令
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
rename-command CONFIG "CONFIG_b8f2d3a4"
# 持久化配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# AOF 配置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
# 客户端限制
maxclients 1000
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# 内存配置
maxmemory 512mb
maxmemory-policy allkeys-lru
EOF
10. 故障排除
1. 检查配置文件语法
docker run --rm -v $(pwd)/config:/config redis:7.0 redis-server /config/redis.conf --test
2. 查看详细日志
docker compose logs --tail 100 redis
3. 检查端口占用
netstat -tlnp | grep 6379
4. 检查容器资源使用情况
docker stats redis-server

1288

被折叠的 条评论
为什么被折叠?



