chore: add missing READMEs

This commit is contained in:
Sun-ZhenXing
2025-11-08 21:57:17 +08:00
parent a65a009640
commit febd1601a2
34 changed files with 1806 additions and 167 deletions

View File

@@ -0,0 +1,120 @@
# Redis Cluster
[English](./README.md) | [中文](./README.zh.md)
此服务用于部署一个包含 6 个节点3 个主节点 + 3 个从节点)的 Redis 集群。
## 服务
- `redis-1``redis-6`Redis 集群节点
- `redis-cluster-init`:初始化容器(一次性设置)
## 环境变量
| 变量名 | 说明 | 默认值 |
| --------------- | -------------- | -------------- |
| `REDIS_VERSION` | Redis 镜像版本 | `8.2.1-alpine` |
请根据实际需求修改 `.env` 文件。
## 卷
- `redis_1_data``redis_6_data`:每个 Redis 节点的数据持久化
## 使用方法
### 启动 Redis 集群
```bash
# 启动所有 Redis 节点
docker compose up -d
# 初始化集群(仅首次)
docker compose --profile init up redis-cluster-init
# 验证集群状态
docker exec redis-1 redis-cli --cluster check redis-1:6379
```
### 连接到集群
```bash
# 使用 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
# 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. 添加到集群:
```bash
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
```
## 移除节点
```bash
# 移除节点
docker exec redis-1 redis-cli --cluster del-node redis-1:6379 <node-id>
```
## 注意事项
- 集群初始化只需执行一次
- 每个节点存储数据的子集
- Redis 集群自动处理故障转移
- 生产环境至少需要 3 个主节点
- 数据自动复制到从节点
## 安全性
- 生产环境添加密码验证:
```bash
command: redis-server --requirepass yourpassword --cluster-enabled yes ...
```
- 使用防火墙规则限制访问
- 生产环境中考虑使用 TLS 进行节点间通信
## 许可证
Redis 采用 Redis Source Available License 2.0RSALv2许可。详情请参见 [Redis GitHub](https://github.com/redis/redis)。