Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时数据处理等场景。通过 Docker 部署 Redis 可以快速搭建一个可移植、可扩展的 Redis 环境。本文将详细介绍如何使用 Docker 部署 Redis,并讲解如何根据需求配置 Redis。
redis-cli
监控redis-stat
监控Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,支持多种数据结构(如字符串、哈希、列表、集合等)。它通常用于缓存、会话存储、消息队列和实时数据分析等场景。
首先,从 Docker Hub 拉取 Redis 官方镜像:
docker pull redis
docker run -d --name my-redis -p 6379:6379 redis
-d
:后台运行容器。--name my-redis
:指定容器名称。-p 6379:6379
:将主机的 6379 端口映射到容器的 6379 端口。为了持久化 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
目录。如果需要使用自定义配置文件,可以将配置文件挂载到容器:
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 支持两种持久化方式:
在配置文件中添加以下内容:
save 900 1 # 900 秒内至少有 1 个键被修改时保存
save 300 10 # 300 秒内至少有 10 个键被修改时保存
save 60 10000 # 60 秒内至少有 10000 个键被修改时保存
在配置文件中添加以下内容:
appendonly yes
appendfilename "appendonly.aof"
默认情况下,Redis 监听所有网络接口。可以通过配置文件绑定特定 IP:
bind 127.0.0.1
在配置文件中添加以下内容:
requirepass yourpassword
可以通过配置文件禁用某些危险命令:
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command CONFIG ""
在配置文件中添加以下内容:
maxclients 10000
以下是一些常用的 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 ""
在主节点的配置文件中添加以下内容:
# 主节点配置
bind 0.0.0.0
requirepass masterpassword
在从节点的配置文件中添加以下内容:
# 从节点配置
slaveof
masterauth masterpassword
哨兵模式用于实现 Redis 的高可用性。
在哨兵配置文件中添加以下内容:
sentinel monitor mymaster 2
sentinel auth-pass mymaster masterpassword
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 集群模式用于实现分布式存储。
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
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>
bind 0.0.0.0
port 6379
requirepass cachepassword
maxmemory 1gb
maxmemory-policy allkeys-lru
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
bind 0.0.0.0
port 6379
requirepass queuepassword
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