Redis Docker开发环境配置指南

Posted on Tue 19 March 2024 in 开发工具

Redis Docker开发环境配置指南

本文档详细介绍如何使用Docker搭建Redis开发环境,包括环境配置、启动方式、维护方法等内容。

目录结构

Redis_Docker/
├── .env                # 环境变量配置文件
├── README.md          # 项目说明文档
├── config/            # 配置文件目录
│   └── redis.conf    # Redis配置文件
├── data/             # 数据存储目录
└── logs/             # 日志文件目录

配置文件说明

1. docker-compose.yml

version: '3.8'

services:
  redis:
    container_name: redis-server
    image: redis:7.2
    ports:
      - "${REDIS_PORT}:6379"
    volumes:
      - ./data:/data
      - ./logs:/var/log/redis
      - ./config/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf
    environment:
      - TZ=Asia/Shanghai
    networks:
      - redis-network
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 5s

networks:
  redis-network:
    driver: bridge

2. .env 环境变量配置

# Redis 配置环境变量
REDIS_PORT=6379           # Redis端口映射
REDIS_PASSWORD=your_password  # Redis访问密码

3. redis.conf 主要配置

# 网络设置
bind 0.0.0.0
port 6379
protected-mode yes
tcp-keepalive 300

# 基本设置
databases 16
loglevel notice
logfile "/var/log/redis/redis.log"

# 内存设置
maxmemory 256mb
maxmemory-policy allkeys-lru
maxmemory-samples 5

# 持久化设置
save 900 1      # 900秒内至少1个键被修改
save 300 10     # 300秒内至少10个键被修改
save 60 10000   # 60秒内至少10000个键被修改

# AOF设置
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec

使用说明

1. 启动服务

# 启动服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs redis

2. 连接Redis

# 使用容器内的redis-cli
docker-compose exec redis redis-cli -a your_password

# 使用主机的redis-cli(如果已安装)
redis-cli -h localhost -p 6379 -a your_password

# 测试连接
redis-cli -h localhost -p 6379 -a your_password ping

3. 停止服务

# 停止服务
docker-compose down

数据持久化

Redis配置了双重持久化机制:

1. RDB持久化

  • 文件位置:data/dump.rdb
  • 自动保存策略:
  • 900秒内至少1个键被修改
  • 300秒内至少10个键被修改
  • 60秒内至少10000个键被修改

2. AOF持久化

  • 文件位置:data/appendonly.aof
  • 同步策略:everysec(每秒同步)
  • 重写策略:auto-aof-rewrite-percentage 100

性能优化

1. 内存配置

  • maxmemory:设置为256MB
  • maxmemory-policy:使用allkeys-lru策略
  • maxmemory-samples:设置为5

2. 网络优化

  • tcp-keepalive:300秒
  • tcp-backlog:511

3. 持久化优化

  • appendfsync:everysec
  • no-appendfsync-on-rewrite:no

安全配置

1. 网络安全

  • protected-mode:启用
  • bind:0.0.0.0(允许所有IP访问)
  • requirepass:设置访问密码

2. 客户端限制

  • maxclients:10000
  • timeout:0(不自动断开空闲连接)

监控和维护

1. 性能监控

# 查看服务器信息
redis-cli -a your_password INFO

# 监控命令执行
redis-cli -a your_password MONITOR

# 查看慢查询日志
redis-cli -a your_password SLOWLOG GET

2. 内存分析

# 查看内存使用情况
redis-cli -a your_password INFO memory

# 查看大键
redis-cli -a your_password --bigkeys

3. 数据备份

# 手动触发RDB备份
redis-cli -a your_password SAVE

# 异步触发RDB备份
redis-cli -a your_password BGSAVE

常见问题处理

1. 连接失败

  • 检查密码是否正确
  • 确认端口映射是否正确
  • 验证Redis服务是否正常运行

2. 内存问题

  • 检查maxmemory设置
  • 查看内存使用情况
  • 考虑调整内存策略

3. 持久化问题

  • 检查磁盘空间
  • 查看AOF/RDB文件状态
  • 确认写入权限

最佳实践

1. 安全建议

  • 使用强密码
  • 限制可访问的IP
  • 定期更新Redis版本

2. 性能建议

  • 合理设置内存上限
  • 选择适当的持久化策略
  • 监控慢查询

3. 运维建议

  • 定期备份数据
  • 监控系统资源
  • 保持日志分析