使用 Docker 部署 Redis

使用 Docker 部署 Redis 详细指南

Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时数据处理等场景。通过 Docker 部署 Redis 可以快速搭建一个可移植、可扩展的 Redis 环境。本文将详细介绍如何使用 Docker 部署 Redis,并讲解如何根据需求配置 Redis。


目录

  1. Redis 简介
  2. Docker 部署 Redis
    • 拉取 Redis 镜像
    • 运行 Redis 容器
    • 持久化配置
    • 网络配置
    • 安全配置
  3. Redis 配置文件详解
    • 常用配置项
    • 自定义配置文件
  4. 高级配置与优化
    • 主从复制
    • 哨兵模式
    • 集群模式
  5. 监控与维护
    • 使用 redis-cli 监控
    • 使用 redis-stat 监控
  6. 案例实战
    • 部署 Redis 缓存服务
    • 部署 Redis 消息队列

Redis 简介

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,支持多种数据结构(如字符串、哈希、列表、集合等)。它通常用于缓存、会话存储、消息队列和实时数据分析等场景。


Docker 部署 Redis

拉取 Redis 镜像

首先,从 Docker Hub 拉取 Redis 官方镜像:

docker pull redis

运行 Redis 容器

1. 简单运行
docker run -d --name my-redis -p 6379:6379 redis
  • -d:后台运行容器。
  • --name my-redis:指定容器名称。
  • -p 6379:6379:将主机的 6379 端口映射到容器的 6379 端口。
2. 挂载数据卷

为了持久化 Redis 数据,可以将数据目录挂载到主机:

docker run -d --name my-redis -p 6379:6379 -v /path/to/redis/data:/data redis
  • -v /path/to/redis/data:/data:将主机的 /path/to/redis/data 目录挂载到容器的 /data 目录。
3. 使用自定义配置文件

如果需要使用自定义配置文件,可以将配置文件挂载到容器:

docker run -d --name my-redis -p 6379:6379 -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
  • -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf:将主机的配置文件挂载到容器。
  • redis-server /usr/local/etc/redis/redis.conf:指定容器启动时使用的配置文件。

持久化配置

Redis 支持两种持久化方式:

  1. RDB(快照):定期将内存中的数据保存到磁盘。
  2. AOF(追加文件):记录每个写操作到日志文件。
1. 启用 RDB

在配置文件中添加以下内容:

save 900 1      # 900 秒内至少有 1 个键被修改时保存
save 300 10     # 300 秒内至少有 10 个键被修改时保存
save 60 10000   # 60 秒内至少有 10000 个键被修改时保存
2. 启用 AOF

在配置文件中添加以下内容:

appendonly yes
appendfilename "appendonly.aof"

网络配置

1. 绑定 IP

默认情况下,Redis 监听所有网络接口。可以通过配置文件绑定特定 IP:

bind 127.0.0.1
2. 设置密码

在配置文件中添加以下内容:

requirepass yourpassword

安全配置

1. 禁用危险命令

可以通过配置文件禁用某些危险命令:

rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
2. 限制客户端连接数

在配置文件中添加以下内容:

maxclients 10000

Redis 配置文件详解

常用配置项

以下是一些常用的 Redis 配置项:

  • port:Redis 监听端口,默认 6379。
  • bind:绑定 IP 地址,默认监听所有接口。
  • daemonize:是否以守护进程运行,默认 no
  • pidfile:PID 文件路径。
  • logfile:日志文件路径。
  • databases:数据库数量,默认 16。
  • save:RDB 持久化规则。
  • appendonly:是否启用 AOF 持久化。
  • requirepass:设置访问密码。

自定义配置文件

以下是一个自定义的 Redis 配置文件示例:

# Redis 配置文件示例

# 绑定 IP
bind 127.0.0.1

# 监听端口
port 6379

# 守护进程模式
daemonize no

# 日志文件
logfile /var/log/redis/redis.log

# 数据库数量
databases 16

# RDB 持久化规则
save 900 1
save 300 10
save 60 10000

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

# 访问密码
requirepass yourpassword

# 最大客户端连接数
maxclients 10000

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

高级配置与优化

主从复制

1. 配置主节点

在主节点的配置文件中添加以下内容:

# 主节点配置
bind 0.0.0.0
requirepass masterpassword
2. 配置从节点

在从节点的配置文件中添加以下内容:

# 从节点配置
slaveof  
masterauth masterpassword

哨兵模式

哨兵模式用于实现 Redis 的高可用性。

1. 配置哨兵

在哨兵配置文件中添加以下内容:

sentinel monitor mymaster   2
sentinel auth-pass mymaster masterpassword
2. 启动哨兵
docker run -d --name redis-sentinel -v /path/to/sentinel.conf:/usr/local/etc/redis/sentinel.conf redis redis-sentinel /usr/local/etc/redis/sentinel.conf

集群模式

Redis 集群模式用于实现分布式存储。

1. 创建集群
docker run -d --name redis-node1 -p 7001:6379 redis
docker run -d --name redis-node2 -p 7002:6379 redis
docker run -d --name redis-node3 -p 7003:6379 redis
2. 初始化集群
redis-cli --cluster create <node1-ip>:7001 <node2-ip>:7002 <node3-ip>:7003

监控与维护

使用 redis-cli 监控

redis-cli -h <redis-ip> -p <redis-port>
INFO  # 查看 Redis 信息
MONITOR  # 实时监控 Redis 操作

使用 redis-stat 监控

docker run -d --name redis-stat -p 63790:63790 insready/redis-stat --server <redis-ip>:<redis-port>

案例实战

部署 Redis 缓存服务

1. 编写配置文件
bind 0.0.0.0
port 6379
requirepass cachepassword
maxmemory 1gb
maxmemory-policy allkeys-lru
2. 启动容器
docker run -d --name redis-cache -p 6379:6379 -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

部署 Redis 消息队列

1. 编写配置文件
bind 0.0.0.0
port 6379
requirepass queuepassword
2. 启动容器
docker run -d --name redis-queue -p 6379:6379 -v /path/to/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

你可能感兴趣的:(docker容器,docker,redis,容器)