TOP云提供高性价比云服务器租用,有中国内地/港澳台、海外等全球各地节点,TOP云国内云服务器只要有域名备案号就能直接用,无须重复备案;港澳台及海外云服务器不用备案,购买之后直接使用,省时省力省心。价格实惠,续费同价,2核2G5M仅需27元每月,8核8G50M仅需66元每月,更多配置套餐请进入下面网址了解:
TOP云总站云服务器:https://topyun.vip/server/buy.html
TOP云C站云服务器:https://c.topyun.vip/cart
在云服务器上搭建 Redis 集群(Redis Cluster),可以实现高可用性、数据自动分片(Sharding)、负载均衡,从而支撑更大规模的数据存储与高并发访问。Redis 官方从 Redis 3.0 开始原生支持集群模式,采用 哈希槽(hash slot)分片机制,支持自动故障转移(类似哨兵模式的高可用)。
一、Redis 集群的核心概念
在搭建之前,先了解几个关键概念:
概念 | 说明 |
---|---|
Redis Cluster | Redis 官方提供的分布式解决方案,支持数据自动分片和高可用 |
哈希槽(Hash Slot) | Redis Cluster 将整个数据空间划分为 16384 个槽,每个节点负责一部分槽 |
主从复制 | 每个主节点可以有一个或多个从节点,用于故障转移 |
故障转移(Failover) | 当主节点宕机时,从节点会自动提升为主节点,继续提供服务 |
客户端路由 | 客户端可以直接连接任意节点,节点会自动判断数据属于哪个槽并转发请求 |
二、搭建 Redis 集群的准备工作
1. 环境要求
操作系统:Linux(如 Ubuntu 20.04、CentOS 7/8)
Redis 版本:建议 Redis 5.0+(推荐 6.x 或 7.x,功能更完善)
服务器数量:至少 6 台云服务器(3 主节点 + 3 从节点,生产环境建议更多)
也可以在同一台服务器上启动多个 Redis 实例模拟多节点(仅用于测试)
网络互通:所有节点之间网络互通,能互相访问对方 Redis 端口(默认 6379)和集群总线端口(默认 16379)
注意:
生产环境建议将主从节点部署在不同物理机或可用区,避免单点故障。
如果是测试环境,可以在一台服务器上启动多个 Redis 实例(需绑定不同端口)。
三、搭建步骤(以 3 主 3 从为例)
方法 1:使用 redis-cli 快速搭建集群(推荐)
Redis 5.0+ 提供了 redis-cli --cluster 命令,可以一键创建集群,无需手动配置 redis.conf。
步骤 1:准备 6 个 Redis 实例
每个实例需要:
独立的配置文件(或通过命令行参数指定端口)
不启用持久化(save "")或单独配置 RDB/AOF(生产环境建议开启)
关闭保护模式(protected-mode no)
绑定 0.0.0.0(或服务器实际 IP)
不设置密码(或所有节点使用相同密码)
示例配置(redis-7000.conf):
port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly no
protected-mode no
bind 0.0.0.0
复制该配置文件,修改端口号为 7001 ~ 7005,共 6 个实例。
步骤 2:启动所有 Redis 实例
redis-server /path/to/redis-7000.conf redis-server /path/to/redis-7001.conf ... redis-server /path/to/redis-7005.conf
检查是否启动成功:
ps aux | grep redis-server
步骤 3:使用 redis-cli 创建集群
Redis 5.0+ 支持一键创建集群(自动分配主从关系):
redis-cli --cluster create \ 服务器1IP:7000 服务器1IP:7001 服务器1IP:7002 \ 服务器2IP:7003 服务器2IP:7004 服务器2IP:7005 \ --cluster-replicas 1
参数说明:
--cluster-replicas 1:每个主节点分配 1 个从节点(共 3 主 3 从)
如果服务器 IP 相同(单机模拟),直接用 127.0.0.1:7000 ~ 127.0.0.1:7005
执行后会提示确认,输入 yes 即可完成集群创建。
方法 2:手动配置集群(适合自定义需求)
如果需要更精细的控制(如指定主从关系),可以手动配置:
启动 6 个 Redis 实例(同方法 1)。
使用 redis-cli 连接任意节点,执行 CLUSTER MEET 命令让节点互相发现:
redis-cli -p 7000 127.0.0.1:7000> CLUSTER MEET 服务器2IP 7001 127.0.0.1:7000> CLUSTER MEET 服务器2IP 7002 ...
分配哈希槽(16384 个槽需手动分配到主节点):
# 示例:将槽 0-5460 分配给 7000,5461-10922 分配给 7001,10923-16383 分配给 7002 redis-cli -p 7000 127.0.0.1:7000> CLUSTER ADDSLOTS 0 1 2 ... 5460 redis-cli -p 7001 127.0.0.1:7001> CLUSTER ADDSLOTS 5461 5462 ... 10922 redis-cli -p 7002 127.0.0.1:7002> CLUSTER ADDSLOTS 10923 10924 ... 16383
配置从节点(以 7003 作为 7000 的从节点为例):
redis-cli -p 7003 127.0.0.1:7003> CLUSTER REPLICATE <7000的节点ID>
节点 ID 可通过 CLUSTER NODES 命令查看。
四、验证集群状态
1. 查看集群节点信息
连接任意节点,执行:
redis-cli -p 7000 127.0.0.1:7000> CLUSTER NODES
输出示例:
<节点ID> <IP:端口>@<总线端口> master - 0 1620000000000 1 connected 0-5460 <节点ID> <IP:端口>@<总线端口> slave <主节点ID> 0 1620000000000 1 connected ...
master 表示主节点,slave 表示从节点。
connected 表示节点已连接。
2. 测试数据写入和读取
# 写入数据(Redis 会自动路由到正确的主节点)
redis-cli -p 7000
127.0.0.1:7000> SET foo bar
# 从任意节点读取数据
redis-cli -p 7001
127.0.0.1:7001> GET foo
如果直接连接从节点读取,可能会返回 MOVED 或 ASK 错误(客户端需支持集群模式)。
五、生产环境建议
1. 节点数量
最小集群:3 主 3 从(共 6 节点)。
生产推荐:至少 6 主 6 从(或更多),避免单点故障和热点问题。
2. 持久化配置
开启 RDB 和 AOF:确保数据安全。
定期备份 RDB 文件:上传到云存储(如阿里云 OSS、腾讯云 COS)。
3. 监控与告警
使用 redis-cli --cluster check 检查集群健康状态。
集成 Prometheus + Grafana 监控 Redis 集群指标(如内存、QPS、延迟)。
4. 客户端使用
必须使用支持 Redis Cluster 的客户端(如 Jedis、Lettuce、StackExchange.Redis)。
客户端需配置所有或部分集群节点地址,由客户端自动路由请求。
六、常见问题
1. 集群模式和哨兵模式的区别?
特性 | Redis Cluster | Redis Sentinel |
---|---|---|
数据分片 | 支持(自动分片) | 不支持(单节点) |
高可用 | 支持(主从自动故障转移) | 支持(主从自动故障转移) |
适用场景 | 大规模数据、高并发 | 单机或主从架构 |
总结:集群模式适合大数据量和高并发;哨兵模式适合单节点或简单主从架构。
2. 如何扩展集群(增加节点)?
使用 redis-cli --cluster reshard 命令重新分配哈希槽。
添加新节点后,手动或自动迁移部分槽到新节点。
七、总结:Redis 集群搭建流程
步骤 | 操作 |
---|---|
1️⃣ 准备环境 | 至少 6 台服务器(或单机多实例) |
2️⃣ 配置 Redis 实例 | 启用 cluster-enabled,关闭保护模式 |
3️⃣ 启动所有实例 | 使用 redis-server 启动 |
4️⃣ 创建集群 | redis-cli --cluster create 或手动配置 |
5️⃣ 验证集群 | CLUSTER NODES 和 SET/GET 测试 |
6️⃣ 生产优化 | 持久化、监控、客户端适配 |