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

部署流程

  1. 准备配置文件

    mkdir -p /home/redis
    vi /home/redis/redis.conf
  2. 启动容器

    # 使用上文完整run命令
  3. 验证部署

    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

安全加固建议

  1. 修改默认端口

    -p 6380:6379  # 对外暴露6380端口
  2. 禁用危险命令

    rename-command FLUSHALL ""
    rename-command CONFIG ""
  3. 网络隔离

    --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

版本升级方案

  1. 停止旧容器并备份数据:

    docker exec redis redis-cli -a 123456 SAVE
    cp /home/redis/data/dump.rdb /backup/
  2. 启动新版本容器(使用相同数据目录):

    docker run ... 192.168.254.130:5000/redis:新版本 ...

此部署方式:

  • 密码保护的安全Redis实例
  • 可配置的内存淘汰策略
  • 持久化数据保障
  • 易于管理的容器化服务
提示:使用redis-benchmark工具进行压力测试:
docker exec redis redis-benchmark -a 123456 -n 100000 -c 50

添加新评论