Files
compose-anything/src/redis-cluster/README.zh.md
2025-11-08 21:57:17 +08:00

2.7 KiB
Raw Blame History

Redis Cluster

English | 中文

此服务用于部署一个包含 6 个节点3 个主节点 + 3 个从节点)的 Redis 集群。

服务

  • redis-1redis-6Redis 集群节点
  • redis-cluster-init:初始化容器(一次性设置)

环境变量

变量名 说明 默认值
REDIS_VERSION Redis 镜像版本 8.2.1-alpine

请根据实际需求修改 .env 文件。

  • redis_1_dataredis_6_data:每个 Redis 节点的数据持久化

使用方法

启动 Redis 集群

# 启动所有 Redis 节点
docker compose up -d

# 初始化集群(仅首次)
docker compose --profile init up redis-cluster-init

# 验证集群状态
docker exec redis-1 redis-cli --cluster check redis-1:6379

连接到集群

# 使用 redis-cli 连接
docker exec -it redis-1 redis-cli -c

# 测试集群
127.0.0.1:6379> CLUSTER INFO
127.0.0.1:6379> SET mykey "Hello"
127.0.0.1:6379> GET mykey

从应用程序访问

在应用程序中使用集群模式连接:

# Python 示例
from redis.cluster import RedisCluster

startup_nodes = [
    {"host": "localhost", "port": "7000"},
    {"host": "localhost", "port": "7001"},
    {"host": "localhost", "port": "7002"},
]
rc = RedisCluster(startup_nodes=startup_nodes, decode_responses=True)
rc.set("foo", "bar")
print(rc.get("foo"))

端口

  • 7000-7005映射到每个 Redis 节点的 6379 端口

集群信息

  • 主节点3 个节点redis-1、redis-2、redis-3
  • 从节点3 个节点redis-4、redis-5、redis-6
  • 总槽数16384分布在主节点间

添加新节点

向集群添加更多节点:

  1. docker-compose.yaml 中添加新服务
  2. 启动新节点
  3. 添加到集群:
docker exec redis-1 redis-cli --cluster add-node new-node-ip:6379 redis-1:6379
docker exec redis-1 redis-cli --cluster reshard redis-1:6379

移除节点

# 移除节点
docker exec redis-1 redis-cli --cluster del-node redis-1:6379 <node-id>

注意事项

  • 集群初始化只需执行一次
  • 每个节点存储数据的子集
  • Redis 集群自动处理故障转移
  • 生产环境至少需要 3 个主节点
  • 数据自动复制到从节点

安全性

  • 生产环境添加密码验证:
command: redis-server --requirepass yourpassword --cluster-enabled yes ...
  • 使用防火墙规则限制访问
  • 生产环境中考虑使用 TLS 进行节点间通信

许可证

Redis 采用 Redis Source Available License 2.0RSALv2许可。详情请参见 Redis GitHub