Redis Cluster 与 Sentinel 笔记

目录

  1. Redis 集群(Cluster)概述

  2. Cluster 的工作原理

  3. Cluster 配置与部署

  4. Cluster 常见问题与限制

  5. Redis Sentinel(哨兵)机制概述

  6. Sentinel 的工作机制

  7. Sentinel 配置与部署

  8. Sentinel vs Cluster

  9. 总结


Redis 集群(Cluster)概述

Redis Cluster 是 Redis 提供的一种 分布式部署方案,用来在多个 Redis 实例之间分散数据,实现 高可用性横向扩展能力

核心特性

  • 数据自动分片(Sharding)
  • 无中心架构,所有节点互为平等
  • 内置故障转移机制
  • 支持主从复制

Cluster 的工作原理

节点结构

  • 主节点(Master):负责处理读写请求并保存部分数据槽。
  • 从节点(Slave):复制主节点数据,用于故障转移。
  • 一个集群至少需要 3 个主节点,推荐每个主节点配备一个从节点,即至少 6 个节点

分片机制(Slot)

  • Redis 集群总共定义了 16384 个槽(slots)
  • 每个主节点负责一部分 slot(例如 0-5460,5461-10922,10923-16383)。
  • 客户端根据 CRC16(key) mod 16384 计算键属于哪个 slot,自动路由到正确节点。

读写流程

  1. 客户端发送请求 → Redis 客户端库计算 slot → 发送到对应主节点。
  2. 如果请求发错了节点,返回 MOVEDASK 重定向。
  3. 从节点可以设置为 只读(readonly) 以分担主节点压力。

故障转移

  • 集群内部通过 Gossip 协议 相互探测。
  • 多个节点确认主节点不可用时,触发 failover。
  • 从节点被提升为主节点,重新分配 slots。

Cluster 配置与部署

示例配置(redis.conf)

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

创建集群命令

redis-cli --cluster create \127.0.0.1:7000 127.0.0.1:7001 \127.0.0.1:7002 127.0.0.1:7003 \127.0.0.1:7004 127.0.0.1:7005 \--cluster-replicas 1

Cluster 常见问题与限制

限制描述
不支持多 key 跨 slot 操作除非 key 属于相同 hash tag(例如 {user:1}.name
不支持事务(multi/exec)跨节点事务不被支持
部署复杂度较高运维和扩容需注意数据重分布

Redis Sentinel(哨兵机制)概述

Sentinel 是 Redis 的高可用解决方案,主要用于主从结构下的自动故障转移和系统监控。

Sentinel 提供以下功能:

  • 自动故障检测
  • 主从切换(Failover)
  • 通知机制(通过 API)
  • 动态配置更新

Sentinel 的工作机制

节点发现

  • 哨兵节点通过配置文件中指定的主节点地址,自动发现主从关系。
  • 多个 Sentinel 节点之间通过协议通信,形成分布式监控网络。

故障检测

  • 每个 Sentinel 定期向主从节点发送 PING

  • 判断标准:

    • 主观下线(sdown):单个 Sentinel 判断主节点不可达。
    • 客观下线(odown):多个 Sentinel 达成一致后认定故障。

主从切换(Failover)

  • 在主节点故障并确认 odown 后,进行如下步骤:

    1. 选择一个从节点为新的主节点。
    2. 其他从节点重新指向新的主节点。
    3. 通知所有客户端更新配置。

通知机制

  • Sentinel 支持发布订阅机制,可以通知外部系统故障或切换事件。
  • 也可以通过 Sentinel API 查询当前状态。

Sentinel 配置与部署

sentinel.conf 示例

port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

启动 Sentinel

redis-sentinel sentinel.conf

CLI 命令示例

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Sentinel vs Cluster

特性SentinelCluster
数据分片❌ 不支持✅ 支持
主从架构✅ 支持✅ 支持
高可用✅ 自动故障转移✅ 自动故障转移
部署复杂度⭐ 简单⚠️ 较复杂
跨节点事务✅ 支持❌ 不支持
场景推荐小型部署,高可用大规模数据分布式

总结

项目ClusterSentinel
高可用
自动切换
分布式扩展
实现机制分片 + 主从主从 + 哨兵
使用复杂度
客户端兼容性特殊支持(支持 cluster 的客户端)普通客户端即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913614.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LLM视觉领域存在模型视觉识别不准确、细粒度视觉任务能力不足等科学问题

LLM视觉领域存在模型视觉识别不准确、细粒度视觉任务能力不足等科学问题 除了前面提到的数据集,还有一些用于评估视觉推理等能力的经典数据集。目前关于LLM视觉领域经典提示词方面的名校或大公司论文较少,以下是相关科学问题、数据集及部分相关论文介绍: 科学问题 视觉推理…

Node.js worker_threads:并发 vs 并行

一、核心结论 Node.js 的 worker_threads 模块实现的是 并行计算 ,而非传统意义上的“并发”。其通过操作系统级线程实现多核 CPU 的并行执行,同时保留 Node.js 单线程事件循环的并发模型。 二、关键概念解析 1. 并发(Concurrency&#xff09…

gloo 多卡训练

我们遇到了分布式训练中的通信超时问题(Connection closed by peer)。根据错误信息,问题发生在梯度同步的屏障(barrier)操作时。以下是针对此问题的优化措施和代码修改: 优化措施: 增强通信稳…

【Docker】在银河麒麟ARM环境下离线安装docker

1、前言 采用离线安装的方式。 关于离线安装的方式官网有介绍,但是说的很简单,网址:Binaries | Docker Docs 官网介绍的有几种主流linux系统的安装方式,但是没有kylin的,所以在此记录一下。 在安装过程中也遇到了些…

AUTOSAR进阶图解==>AUTOSAR_SWS_SOMEIPTransformer

AUTOSAR SOME/IP 转换器规范详解 基于AUTOSAR标准的SOME/IP转换器协议解析与实现指南目录 1. 介绍与功能概述2. SOME/IP架构 2.1 SOME/IP转换器架构2.2 组件解释2.3 层级说明 3. SOME/IP通信流程 3.1 客户端/服务器通信序列3.2 通信流程解释 4. SOME/IP消息结构 4.1 消息结构类…

Python 机器学习核心入门与实战进阶 Day 5 - 模型调参与交叉验证技巧(GridSearchCV、KFold)

✅ 今日目标 理解模型调参的重要性(避免欠拟合/过拟合)掌握 GridSearchCV 的使用方法学习 K 折交叉验证的基本流程与意义对比不同参数组合的表现使用 Pipeline 简化流程(进阶)📘 一、调参思路方法描述Grid Search穷举所…

Python打卡:Day47

复习日 浙大疏锦行

ACE-Step:AI音乐生成基础模型

ACE-Step是什么 ACE-Step 是 ACE Studio 和 StepFun 联合推出的一款开源音乐生成基础模型,专为高效、连贯、可控的音乐创作而设计。它融合了扩散模型、深度压缩自编码器(DCAE)和轻量级线性变换器,生成速度比传统大模型快约 15 倍…

Web前端: :is(通用选择器)

:is(通用选择器)CSS中的 :is() 选择器是⼀个功能强⼤的伪类选择器,它⽤于简化复杂的选择器,特别是在处理多个相似的选择器时。:is() 选择器接受 ⼀个选择器列表作为参数,然后匹配列表中任何⼀个选择器所选中的元素。:is() 选择器核心概念基本…

【学习笔记】网络设备(华为交换机)基础知识 24 —— 以太网子接口基础知识

**总结:分享华为交换机以太网子接口基础知识:包含子接口的简介、功能、分类以及二层以太网子接口配置终结子接口、三层以太网子接口配置终结子接口和检查配置结果的相关命令 ** 一、子接口的概念 1、子接口的简介以太网子接口:‌是通过协议和…

在Docker中安装nexus3(作为maven私服)

1. 为什么我不推荐安装nexus2? 有两个原因:(1)nexus2安装麻烦,nexus3安装更方便 (2)Nexus 3相对于Nexus 2进行了一些重要的改进和增强。它引入了新的存储引擎、更多的仓库类型支持、改进的权限…

一、MySQL 8.0 之《EXPLAIN ANALYZE 执行计划》

文章目录一、MySQL EXPLAIN ANALYZE 执行计划指南主要功能实际执行性能分析详细的执行统计性能瓶颈识别与普通 EXPLAIN 的区别使用场景查询优化问题诊断总结二、EXPLAIN ANALYZE 执行计划样例分析执行顺序解读逐行详细解释第 7 行 (最内层)第 6 行第 5 行第 4 行第 3 行第 2 行…

Google I/O Extended :2025 Flutter 的现状与未来

大家好,我是 Flutter GDE 郭树煜,Github GSY 项目的维护人,今天主要分享的内容是「Flutter 的现状与未来」,可能今天更多会是信息科普类型的内容,主要是分享关于 Flutter 的现状与未来 现状 其实 Flutter 从开源到现在…

软考(软件设计师)数据库原理:事务管理,备份恢复,并发控制

数据库事务管理与备份恢复 事务(Transaction) 是数据库管理系统中执行的一个不可分割的工作单元,它包含一组 SQL 操作,这些操作要么全部成功执行,要么全部不执行。 事务的四大特性(ACID)&…

【牛客刷题】相遇

文章目录 一、题目介绍1.1 题目描述1.2 输入描述1.3 输出描述1.4 示例二、解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:基础实现3.1.1 初级版本分析3.2 解法二:优化版本(推荐)3.2.1 优化版本分析一、题目介绍 1.1 题目描述 街道可以看…

uni-app 下拉搜索多选 支持自己创建数据

组件 /components/selectmul.vue <template><view class="multi-select-container"><view class="input-dropdown-container"><view class="" v-if="selectlist&&selectlist[0]"><text class=&qu…

nmon使用方法

安装方法 方法1&#xff1a; 最简单方法&#xff1a; #dnf install nom 验证 执行命令&#xff1a; #nmon 方法2&#xff1a; 下载安装包安装&#xff0c;下载地址 官网&#xff1a;nmon and njmon | Site / Download 或者&#xff1a;https://sourceforge.net/project…

Google AI 刚刚开源 MCP 数据库工具箱,让 AI 代理安全高效地查询数据库

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

数学建模的一般步骤

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 青春由磨砺而出彩&#xff0c;人生因奋…

【web安全】SQLMap 参数深度解析:--risk 与 --level 详解

目录 简介 一、--risk 参数&#xff1a;测试风险控制 1. 基本定义 2. 各级别详细对比 risk1 (默认) risk2 risk3 3. 使用建议 二、--level 参数&#xff1a;测试深度控制 1. 基本定义 2. 各级别详细对比 level1 (默认) level2 level3 level4 level5 3. 技术实…