当前位置: 首页 > news >正文

Redis7集群搭建与原理分析

一、集群搭建步骤

1. 环境准备

  • 至少 6 个节点(3 主 + 3 从),建议分布式部署
  • 所有节点安装 Redis 7(需支持集群模式)
  • 开放节点间通信端口(默认 6379 + 集群总线端口 16379

2. 节点配置 每个节点的 redis.conf 配置:

port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
daemonize yes

3. 启动所有节点

redis-server /path/to/redis.conf

4. 创建集群 使用 redis-cli 自动分配槽位:

redis-cli --cluster create \192.168.1.101:6379 \192.168.1.102:6379 \192.168.1.103:6379 \192.168.1.104:6379 \192.168.1.105:6379 \192.168.1.106:6379 \--cluster-replicas 1

参数说明:--cluster-replicas 1 表示每个主节点配 1 个从节点

5. 验证集群状态

redis-cli --cluster check 192.168.1.101:6379

输出应包含主从关系和槽位分配信息。


二、核心原理分析

1. 数据分片机制

  • 将数据划分为 16384 个槽位(Slot)
  • Key 通过哈希算法定位槽位
  • 每个主节点负责部分槽位(如 Node1 负责 0-5500 槽)

2. 请求路由过程

graph LR
A[客户端] --> B{Key 计算 slot}
B -->|slot 属于当前节点| C[直接处理]
B -->|slot 不属于当前节点| D[返回 MOVED 重定向]
D --> E[客户端重连至正确节点]

3. 高可用实现

  • 主从复制:每个主节点有 1-N 个从节点,数据异步复制
  • 故障转移
    1. 节点间通过 Gossip 协议检测故障
    2. 从节点发起选举(Raft 算法)
    3. 新主节点接管槽位并广播更新

4. 集群总线

  • 专用 TCP 端口(主端口 + 10000)用于:
    • 节点间心跳检测
    • 配置信息传播
    • 故障转移协商

三、关键注意事项
  1. 槽位覆盖:必须保证所有 16384 个槽位被分配,否则集群不可用
  2. 跨槽操作:不支持多 Key 跨槽事务(需用 Hash Tag 绑定相同 slot)
    # 使用 {} 强制相同 slot
    SET user:{1000}.name "Alice"
    SET user:{1000}.age 30
    

  3. 扩容流程
    • 添加新节点:redis-cli --cluster add-node new_ip:port exist_ip:port
    • 迁移槽位:redis-cli --cluster reshard exist_ip:port

性能建议:集群节点数不超过 1000,单个分片数据量控制在 20GB 以内

通过上述架构,Redis 集群实现了线性扩展(每增加节点提升约 100K QPS)和故障自动恢复能力,适用于高并发分布式场景。

http://www.dtcms.com/a/321751.html

相关文章:

  • element plus table 表格操作列根据按钮数量自适应宽度
  • 从引导加载程序到sysfs:Linux设备树的完整解析与驱动绑定机制
  • 您与此网站之间建立的连接不安全
  • 智慧园区漏检率↓82%:陌讯多模态融合算法实战解析
  • 防御保护09
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • 手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
  • 二、k8s 1.29 之 网络
  • OpenAI 的 GPT-5 来了
  • GO的启动流程(GMP模型/内存)
  • 要写新项目了,运行老Django项目找找记忆先
  • Redis(②-持久化)
  • 写一个redis客户端软件,参考 Another Redis Desktop Manager 的设计风格。
  • 【沉浸式解决问题】pycharm关闭科学模式
  • Docker Compose 实战指南:从配置到多容器联动的全流程解析
  • Linux系统编程Day9 -- 理解计算机的软硬件管理
  • Dijkstra?spfa?SPstra?
  • 01Vue3
  • 增长强势 成果丰硕 | Fortinet发布2025年第二季度财报
  • GPT-5正式发布:与Claude 4、Gemini 2.5等主流大模型谁更胜一筹?
  • Java中重写和重载有哪些区别
  • 大模型——部署体验gpt-oss-20b
  • 写论文助手Zotero 的使用
  • Scrapy返回200但无数据?可能是Cookies或Session问题
  • electron 静默安装同时安装完成后自动启动(nsis)
  • 【vLLM 学习】Load Sharded State
  • VB网际探针:零依赖轻量爬虫实战
  • GPT-5 is here
  • STM32 输入捕获,串口打印,定时器,中断综合运用
  • centos系统配置防火墙