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

了解Redis集群概念,集群如何选举主节点

请给胡广一个免费的三连吗?感谢!

1. Redis集群

1.1 集群概念

Redis主从架构和Redis集群架构是两种不同的概念,大家刚接触Redis时经常弄混淆。胡广给大家贴下Redis官网对两者的解释。

(1)Redis主从架构

Redis主从实现了有一个易于使用和配置的领导者跟随者复制,它允许副本 Redis 实例成为主实例的精确副本。

(2)Redis集群架构

Redis 集群将数据自动分片到多个 Redis 节点,Redis 集群还在分区期间提供一定程度的可用性,当某些节点发生故障或无法通信时,Redis集群能够继续运行。

它们两者都是Redis高可用的解决方案,但偏向点不同。Redis主从对数据的完整性更看重,Redis主从节点都保存了完整的一套数据库状态。

而Redis集群则对抗压能力更看重,整个集群的数据库整合起来才是一个完整的数据库。

在功能性上它们也有不同,Redis主从有哨兵,而Redis集群有分片。我们要看业务选择不同的Redis方案,当然,Redis集群还可以搭配Redis主从一起使用,我们可以在某一个集群节点上配置一套主从模型。

如果要6002、6003节点添加到6001节点的Redis集群里,我们可以使用以下命令。

127.0.0.1:6001> CLUSTER MEET 127.0.0.1 6002
OK
127.0.0.1:6001> CLUSTER MEET 127.0.0.1 6003
OK

1.2 集群分片

大家要记住Redis集群一个很重要的知识点,那就是分片。

Redis集群通过分片的方式来保存数据库中的键值对,Redis集群把整个数据库分为16384个槽,而集群中的每个节点可以处理这里面的0个或最多16384个槽。

假如南友们在公司里配置了一个包含 3 个节点的集群,那么这3个节点的槽分配会是这样的:

  • 节点 A 包含从 0 到 5500 的哈希槽。
  • 节点 B 包含从 5501 到 11000 的哈希槽。
  • 节点 C 包含从 11001 到 16383 的哈希槽。

那这样分片有什么作用?

大家想一想,有了分片,我们对某一个键值对的增删改查就会在三个集群节点中的其中一个进行,这样对Redis的各种操作也就负载均衡地下落到各个集群的节点中。

1.3 重新分片

Redis集群甚至可以在线上环境直接执行重新分片功能,分片是不是很灵活呢?胡广给Redis点赞。

Redis官网对分片是这么解释的。

Moving hash slots from a node to another does not require stopping any operations; therefore, adding and removing nodes, or changing the percentage of hash slots held by a node, requires no downtime.

将哈希槽从一个节点移动到另一个节点不需要停止任何操作;因此,添加和删除节点,或更改节点持有的哈希槽百分比,不需要停机。

Redis集群重新分片可以将任意数量已指派给某个节点的槽改为指派给另一个节点,而相关槽所属的键值对也会从源节点被移动到目标节点。重新分片操作也不需要集群节点下线,源节点和目标节点也都可以继续处理命令请求。

要是小伙伴遇到热点数据都精确命中了Redis集群的某一个节点,赶快在线上环境紧急重新分片,把相关热点槽指派给其他节点处理,这也是一个不错的选择。

2. 集群的主从模型

2.1 主从模型

还记得上文胡广提到过可以给Redis集群的某一个节点配置主从模型吗?

Redis集群把键值都分散在多个集群节点中,这也有缺点。例如某一个节点失效了,那这个节点里所有槽的键值对也都无法访问了。Redis官方当然也知道,主从模型可以让集群节点有1~N个副本节点。

像上文的Redis集群的A、B、C三个节点,主从模型可以为这每一个主节点添加一个副本节点。这样的话集群就变成了由A、B、C、A1、B1、C1组成,例如当A节点失效了,那它的副本节点A1就会提升为新的主节点。

主从模型也有另外的好处,我们可以让主节点用于处理槽,而副本节点用来分担读的压力

为集群B节点添加B1、B2副本节点

2.2 主节点选举

Redis集群的主从模型选举主节点和Redis哨兵选举出主节点非常相似,但大家不要搞混了,Redis集群中并没有哨兵的概念。

主从模型选举主节点和哨兵选举领头哨兵一样是先到先得,而且它们投票的对象是集群中的其他主节点

选举的流程如下。

(1)当从节点发现主节点进入下线状态时,会广播一条CLUSTERMSG_TYPE_FAILOVER_AUTH_REQUEST消息,要求其他集群主节点向改从节点进行投票。

(2)投票遵循先到先得的规则,集群主节点会投票给第一个发送选举信息的该从节点,返回一条CLUSTERMSG_TYPE_FAILOVER_AUTH_ACK消息。

(3)如果集群主节点的个数是N,当某个从节点收到大于等于N / 2 + 1张支持票时,代表该从节点获胜,该从节点也将成为新的主节点。

 你好,我是胡广。 致力于为帮助兄弟们的学习方式、面试困难、入职经验少走弯路而写博客 🌹🌹🌹 坚持每天两篇高质量文章输出,加油!!!🤩

 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 😄 (^ ~ ^) 。想看更多 那就点个关注     吧 我会尽力带来有趣的内容 。

 😎感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以      给我留言咨询,希望帮助更多的人

更多专栏:
📊 Java设计模式宝典:从入门到精通(持续更新)

📝 Java基础知识:GoGoGo(持续更新)

⚽ Java面试宝典:从入门到精通(持续更新)

🌟 程序员的那些事~(乐一乐)

🤩 Redis知识、及面试(持续更新)

🚀 Kafka知识文章专栏(持续更新)

🎨 Nginx知识讲解专栏(持续更新)

📡 未完待续。。。

🎯 未完待续。。。

🔍 未完待续。。。

感谢订阅专栏 三连文章

相关文章:

了解Redis集群概念,集群如何选举主节点

请给胡广一个免费的三连吗?感谢! 1. Redis集群 1.1 集群概念 Redis主从架构和Redis集群架构是两种不同的概念,大家刚接触Redis时经常弄混淆。胡广给大家贴下Redis官网对两者的解释。 (1)Redis主从架构 Redis主从实…...

Ozon跨境商家提升销量的关键:测评补单策略与必备条件

Ozon,自1998年创立以来,已稳居俄罗斯多品类电商领域的领导地位,不仅是俄罗斯最为人所熟知的电商品牌,更是该国电商行业的先驱之一。那么,对于希望在Ozon平台上实现销售爆单的跨境卖家而言,他们需要满足哪些…...

缺乏大模型经验,还有机会吗?

做大模型一年半,经历了无数场面试。 关于经验,我最常听到的候选人(尤其是学生)的说辞是:我没有大模型经验,可以给个机会吗?答案是,我们并不看重候选人的大模型训练经验。这里不是说经验不重要,而是大部分人…...

如何阅读李冬梅老师《数据结构》

根据《如何阅读一本书》第五章:主动阅读的基础:阅读者要提出的4个基本问题? 以第2章,线性表为例: (1)本章主要在谈些什么?例如第二章简介,读完这一章可以自己试着写个简…...

Python————正则表达式

正则表达式 前言一、正则表达式是什么?二、使用模块 re三、re 模块中的代码图示3.1 re模块匹配单个字符3.2 re模块匹配多个字符3.3 re模块匹配开头跟结尾3.4 re模块匹配分组3.5 扩展: 总结 前言 在实际开发过程中经常会有查找符合某些规则的字符串 比如&#xff1a…...

将你的github仓库设置为web代理

将你的github仓库设置为web代理 废话不多说,直接上步骤 废话不多说,直接上步骤 创建一个仓库,上传静态web。 2. 设置仓库的 page 1)点击 “Settings” 如图设置...

CTFHub技能树-Git泄漏-Index

目录 一、Git索引(Index)的基本概念 二、解题过程 主旨:使用git泄漏恢复源代码 方法一:使用GitHack手动恢复 方法二:直接使用Git_Extract获取网站源代码拿去flag 当前大量开发人员使用git进行版本控制&#xff0c…...

vb.net发送邮件:如何高效地实现邮件发送?

vb.net发送邮件怎么配置服务器?怎么用vb.net发邮件? 如何高效地实现vb.net发送邮件,确保邮件能够快速、稳定地送达,是许多开发者面临的挑战。AokSend将深入探讨vb.net发送邮件的最佳实践,帮助您提升邮件发送的效率和可…...

mycat双主高可用架构部署-水评分表-范围分片配置

MySQL5.7服务器IP是192.168.31.209及192.168.31.210 vi /usr/local/mycat/conf/schema.xml <?xml version"1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat"http://io.mycat/"><schema n…...

开发模型例题

答案&#xff1a;A 解析&#xff1a;瀑布模型是跟对需求明确的项目 增量模型是将需求分为多个阶段&#xff0c;适合一开始需求不明确的 演化模型适合用户需求不清&#xff0c;需求经常变化的情况 螺旋模型适合庞大&#xff0c;复杂且具有高风险的系统...

一文搞懂 TS中 函数、枚举、别名 | TypeScript 入门指南 06

大家好&#xff0c;我是王天~ 这篇文章是 ts入门指南系列中第6 篇&#xff0c;主要讲解ts中的 函数、枚举、别名应用~ 如有不对的地方 欢迎留言反馈哈 函数 在TypeScript中&#xff0c;可选参数和默认参数、剩余参数以及函数重载可以帮助我们更灵活地定义和使用函数。 1、可…...

基于JAVA+SpringBoot+Vue的前后端分离的图书馆管理系统

基于JAVASpringBootVue的前后端分离的图书馆管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末附源码下载链接&#…...

基于SpringBoot+Vue的鲜花销售/鲜花商城/花店管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的鲜花销售…...

信号发生器在扫描模式下输出正弦波信号,需要注意设置哪些参数

在信号发生器工作于扫描模式&#xff08;Sweep Mode&#xff09;并输出正弦波信号的情况下&#xff0c;需对设备进行以下关键参数设置&#xff1a; 1、波形设置 选择波形&#xff1a;正弦波&#xff08;Sine Wave&#xff09; 正弦波是常见的周期性波形&#xff0c;在扫描模式…...

xss-labs-master通关教程

一.level1 先来进行一下代码审计 <?php ini_set("display_errors", 0);//关闭错误显示 $str $_GET["name"]; //接受URL来的get形式的name传参 echo "<h2 aligncenter>欢迎用户".$str."</h2>";//在网页输出&#x…...

断点回归模型

断点回归&#xff08;Regression Discontinuity Design, RDD&#xff09;是一种准实验设计方法&#xff0c;用于评估政策或其他干预措施的效果。这种方法利用了一个清晰的阈值或“断点”&#xff0c;在这个阈值上&#xff0c;处理状态&#xff08;例如是否接受某种干预&#xf…...

app广告推送常见业务术语

DAU: 日活跃用户(Daily Active Users) GMV: 商品交易总额&#xff08;Gross Merchandise Volume&#xff09; DSP&#xff1d;demand side platform&#xff1d;需求方平台 DMP&#xff1d;data management platform数据管理平台 ADX&#xff1d;ad exchange&#xff1d;广告交…...

2024/9/11 小型PLC典型应用2:伺服canlink配置、指令、应用

下面这个指令需要设置伺服的急停方式&#xff08;例如&#xff1a;惯性停机、急停等等&#xff09; 通讯故障步骤排查 1&#xff1a;接线问题 2&#xff1a;配置问题&#xff08;波特率.....&#xff09;...

在IDEA中如何创建web项目?——不使用Archetype

二、不使用Archetype 1、创建Maven项目 &#xff08;1&#xff09;首先打开Project Structure&#xff1a;File——>Project Structure或者快捷键crtlaltshifts &#xff08;2&#xff09;Module——>New Module&#xff1a; &#xff08;3&#xff09;在新打开的页面下…...

基于C#+SQL Server2008 开发三层架构(CS界面)图书管理系统

图书管理系统 一、项目背景及意义 当今由于信息技术的飞速发展&#xff0c;图书馆作为社会知识信息媒介的功能日益重要&#xff0c;网络环境下的信息资源建设知识仓库的设计&#xff0c;开放存取学术交流模式&#xff0c;知识管理系统&#xff0c;智能检索&#xff0c;数字参…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

五、jmeter脚本参数化

目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...