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 ClusterRedis 官方提供的分布式解决方案,支持数据自动分片和高可用
哈希槽(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:手动配置集群(适合自定义需求)

如果需要更精细的控制(如指定主从关系),可以手动配置:

  1. 启动 6 个 Redis 实例(同方法 1)。

  2. 使用 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
...
  1. 分配哈希槽(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
  1. 配置从节点(以 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 ClusterRedis 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️⃣ 生产优化持久化、监控、客户端适配


不容错过
Powered By TOPYUN 云产品资讯