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

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.xdnf.cn/news/17436.html

相关文章:

  • 基于Web的交互式坐标系变换矩阵计算工具
  • BGP综合实验练习作业
  • 使用OAK相机实现智能物料检测与ABB机械臂抓取
  • 从零构建TransformerP2-新闻分类Demo
  • Langchain入门:构建一个基于SQL数据的问答系统
  • 後端開發技術教學(三) 表單提交、數據處理
  • 汽车零部件深孔加工质控升级:新启航激光频率梳 3D 测量解决传统光学扫描遮挡
  • 应急响应流程
  • ADB 命令执行模块开发:双模式(普通模式Shell交互模式)实现、线程安全与资源管理优化
  • Nextcloud容器化部署新范式:Docker与Cpolar如何重塑私有云远程访问能力
  • 为什么输入 URL 后会显示页面?HTTP 协议的 “幕后操作”
  • docker缓存目录转移设置和生效过程
  • WPF 双击行为实现详解:DoubleClickBehavior 源码分析与实战指南
  • linux信号量和日志
  • 杂谈 001 · VScode / Copilot 25.08 更新
  • 【系统编程】进程初识
  • 用JOIN替代子查询的查询性能优化
  • GESP2023年12月认证C++一级( 第三部分编程题(2)小杨报数)
  • 行业速览:中国新能源汽车市场格局与关键趋势
  • 解码华为云安全“铁三角”:用“分层防御”化解安全挑战
  • mac电脑解决在不同项目需要频繁手动切换node版本的困扰
  • JDY后端一二三面经(已OC)
  • 分享超图提供的、很不错的WebGIS学习资源
  • Dixon‘s 因子分解法——C语言实现
  • 基于R语言,“上百种机器学习模型”学习教程 | Mime包
  • 手搓MCP全流程指南:从本地开发部署到PyPI公开发布
  • 快速了解svm算法
  • 使用Python将中文语音翻译成英语音频
  • 【无标题】无名管道
  • 论文精读(二)| 开源软件漏洞感知技术综述