RedisCluster集群原理

Redis——Redis Cluster集群原理 摘要 我们平时习惯于使用 Rabbitmq 和 Kafka 作为消息队列中间件,来给应用程序之间增加异步消息传递功能。这两个中间件都是专业的消息队列中间件,特性之多超出了大多数人的理解能力。使用过 Rabbitmq 的同学知道它使用起来有多复杂,发消息之前要创建 Exchange,再创建 Queue,还要将 Queue 和 Exchange 通过某种规则绑定起来,发消息的时候要指定 routingkey,还要控制头部信息。消费者在消费消息之前也要进行上面一系列的繁琐过程。但是绝大多数情况下,虽然我们的消息 阅读详情

RedisCluster集群原理

主从复制,数据值每个服务器都存了。

针对redis集群的解决方案, 

   连接这个集群,不用在乎Master了

  6台redis

 

1、why use Redis?

  减轻数据库访问压力

2、持久化

  RDB(间隔,非实时) AOF(日志形式记录,实时)   如果在项目 断电(不会保存) 和 停止redis  redis停止时候会保存就rdb日志文件     rdb是独立进程实现的

3、redis 集群方案  

                            redis3.0 之前 不支持redis集群

     1、客户端分片技术(mycat,没有故障转移功能)

     2、主从复制实现的集群,缺点数据冗余! 

     3、redis强烈推荐 redis-cluster (redis3.0之后实现的)

 

三台独立的 redis 服务器

卡槽:0 - 16384位置

   set name  ok

  如何存储呢? 

      根据客户端的key  进行算法 计算出一个数字    取模 卡槽总数(16384)  得出来的值 映射到对应的卡槽

     比如有3台redis   每个卡槽均匀分布

 

客户端随便连接一台redis   get name时候    根据key 通过算法 得到数字 自动转到 实际值存储的那一台

 

 

Redis集群方式

3.0版本之前

 

  1. 3.0版本之前的redis是不支持集群的,我们的redis如果想要集群的话,就需要一个中间件,然后这个中间件负责将我们需要存入redis中的数据的key通过一套算法计算得出一个值。然后根据这个值找到对应的redis节点,将这些数据存在这个redis的节点中。
  2.       在取值的时候,同样先将key进行计算,得到对应的值,然后就去找对应的redis节点,从对应的节点中取出对应的值。
  3.   这样做有很多不好的地方,比如说我们的这些计算都需要在系统中去进行,所以会增加系统的负担。还有就是这种集群模式下,某个节点挂掉,其他的节点无法知道。而且也不容易对每个节点进行负载均衡。

常见集群方案

1.官方方案redis-cluster搭建实战

2.客户端分片技术(不推荐),扩容/缩容时,必须手动调整分片程序,出现故障不能自动转移

3.可以使用主从复制方式(不推荐)

4.使用一些代理工具

 

Redis-cluster原理

 

 

 

Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。

Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的

所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。

Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。

 

 

 

 

 

在这个图中,每一个蓝色的圈都代表着一个redis的服务器节点。它们任何两个节点之间都是相互连通的。客户端可以与任何一个节点相连接,然后就可以访问集群中的任何一个节点。对其进行存取和其他操作。

那么redis是怎么做到的呢?首先,在redis的每一个节点上,都有这么两个东西,一个是插槽(slot)可以理解为是一个可以存储两个数值的一个变量这个变量的取值范围是:0-16383。还有一个就是cluster我个人把这个cluster理解为是一个集群管理的插件。当我们的存取的key到达的时候,redis会根据crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

还有就是因为如果集群的话,是有好多个redis一起工作的,那么,就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务。这个备用的redis称为从节点(slave)。那么这个集群是如何判断是否有某个节点挂掉了呢?

 首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息。

 它们之间通过互相的ping-pong判断是否节点可以连接上。如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点。如果某个节点和所有从节点全部挂掉,我们集群就进入faill状态。还有就是如果有一半以上的主节点宕机,那么我们集群同样进入发力了状态。这就是我们的redis的投票机制,具体原理

 

这套架构的特点:

 

分片算法:基于 slot hash桶;

分片实例之间相互独立,每组 一个master 实例和多个slave;

路由信息存放到第三方存储组件,如 zookeeper 或etcd

旁路组件探活

 

修改Avaya IP-Office电话交换机出厂自带的提示语音内容 1,本文的应用场景是在使用Avaya IP-office 500 v2电话交换机时,来电振铃超时后,会转入语音信箱,呼叫者会听到一条语音信箱留言的欢迎辞(…请留言…)。但我们单位情况比较特殊,首先是的IPO配置很精简,内嵌的语音信箱只能保留3天,用处不大;其次是用户没有收听语音信箱的习惯;第三是我们单位使用数字中继和DID,每人一个直拨号码,不通过总机转接。很多业务是单线联系,所以一旦来电无法接通,来电者可能完全无法联系到我们单位的其他同事。出于这三点原因,我们希望将语音信箱的欢迎辞,增加告知我们的总机电话 阅读详情

相关推荐

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 290

redis系列09--redis-Cluster原理

目录 一、节点间的内部通信机制 1、基础通信原理 2、gossip协议 3、ping消息深入 二、面向集群的jedis内部实现原理 1、基于重定向的客户端 2、smart jedis 三、高可用性与主备切换原理 1、判断节点宕机 2、从节点过滤 3、从节点选举 4、与哨兵比较 一、节点间的内部通信机制 1、基础通信原理 (1)redis cluster节点间采取gos...

sunforlife的博客 733

查看电脑mac地址+主机名+用户名并导出

张三:李四,应公司要求,今天下班前必须将这张表格里面用户电脑的mac地址统计出来!李四:我该怎么办呢?一个一个查看,太没有效率了吧!对了,我可以做一个bat脚本啊!

拥抱着青春 1974

redis(六)Redis Cluster集群原理

一、数据分布 一、数据分布理论 aa 二、搭建集群 三、节点通信 四、集群伸缩 五、请求路由 六、故障转移 七、集群运维 五种数据结构底层实现,限流、lru、布隆过滤器、数据一致性、多路复用IO模型、零拷贝、分布式锁 ...

qq_35599414的博客 2994

手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现)

本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。

oo7890的博客 395

如何设计QR反激变换器

摘要:本文分析了基于GaN技术的PD适配器市场现状,重点探讨了准谐振反激变换器(QR Flyback)的工作原理及设计方法。文章首先介绍了反激变换器的三种工作模式(CCM、DCM、CRM/QR)及其特点,指出QR模式通过谷底开通技术能显著降低开关损耗。随后以65W适配器为例,详细阐述了变压器参数设计流程,包括匝比确定、原边电感计算和绕组匝数设计等关键步骤。文章强调QR反激变换器凭借高效率、小体积和低成本优势,已成为20W-65W PD适配器的主流拓扑方案,配合GaN技术进一步提升了功率密度和便携性。

m0_62868254的博客 1496

【Redis】Redis Cluster集群原理

Redis Cluster是Redis官方提供的集群解决方案。由于业务的飞速增长,单机模式总会遇到内存、性能等各种瓶颈,这个时候我们总会喊,上集群啊。就跟我家热得快炸了,你总喊开空调呀一样。的确,上集群可以解决大多数问题,但是在使用集群的过程中,不可避免会遇到这样那样的问题,这个时候怎么办呢,各种百度各种群里去问吗?NO,作为开发人员,在享受第三方提供的方便前,有必要去了解其基本的工作机制,这样才能在遇到问题时快速定位,方便下手。本篇文章主要是梳理Redis集群的原理和Java客户端JedisCluster

红尘道,红尘练心 430

海德汉机床采集数据

海德汉数控系统我一般在高端机床上见得比较多。有好多五轴加工精度比较高的机床都用的是海德汉的系统。市面上常见的有530和640等型号。海德汉的采集还是有点难度的,需要对SDK有深度的了解。

若云流风的专栏 1529

【Redis】深入探索 Redis 集群(Cluster)模式的概念、原理、数据分片算法,基于 Docker 模拟搭建 Redis 集群分布式架构

Redis Cluster 是一种分布式集群模式,它允许将数据分散存储在多个节点上,从而提供了横向扩展、高可用性和更大存储容量。Redis Cluster 有以下关键特点: 分布式数据存储: Redis Cluster 将数据划分为多个槽(slot),这些槽分布在不同的节点上。每个节点负责管理一部分槽中的数据,这样数据可以分布在多个节点上,避免了单节点存储容量的限制。 自动数据分片: Redis Cluster 使用哈希槽来分片数据,客户端根据键的哈希值将数据路由到正确的节点。这使得数据的分片和路由是自

qq_61635026的博客 4523

CloudCompare 二次开发:插件中的 PCL 环境配置与编程

在进行 CloudCompare 的二次开发过程中,我们常常需要使用点云库(Point Cloud Library,简称 PCL)来处理和分析点云数据。在 CloudCompare 的界面中,选中一个点云对象,然后点击菜单栏中的 “插件” -> “MyPluginAction”。插件将对选中的点云对象进行体素滤波处理,并更新显示结果。下面我们将展示一个简单的插件编程示例,该示例使用 PCL 对输入的点云数据进行体素滤波处理。方法进行体素滤波处理,并将结果点云赋值给选中的点云对象。文件并点击 “打开”。

2301_79331387的博客 283

【大模型】DeepSeek + Coze 打造个人专属AI智能体使用详解

DeepSeek + Coze 打造个人专属AI智能体使用详解

congge 1万+

RedisCluster 集群实现原理

文章目录1. Redis Cluster 的架构RedisCluster 设计成 16384 个 Slot 的原因2. 集群内部通信机制2.1 RedisCluster 节点间通信方式2.2 Gossip 协议3. 高可用性原理 1. Redis Cluster 的架构 从 redis 3.0 版本之后,redis 支持 Redis-Cluster集群作为 Redis 的分布式解决方案。该集群采用多主多从结构,使用多个 Master节点保存数据和整个集群状态,这样就可以很好地支持横向扩容,通过增减 Mast

谈谈1974 1453

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

微服务架构-Redis实战原理剖析-077:RedisCluster哨兵集群实现原理

077:RedisCluster哨兵集群实现原理1 回顾Redis主从复制与哨兵机制2 传统Redis哨兵集群存在那些缺陷3 RedisCluster分片集群实现原理4 基于不同Redis配置文件启动多个不同的Redis5 Linux环境上搭建RedisCluster6 RedisClient连接Redis分片集群 1 回顾Redis主从复制与哨兵机制 课程内容: 传统集群方式存在那些缺点? 为什么需要使用RedisCluster集群 RedisCluster高可用集群实现原理 搭伪集群RedisClus

枫火的博客 239

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

78.RedisCluster扩容与缩容&Jedis支持集群原理

一、快速回顾搭建RedisCluster集群 1.cash槽 2. 没有分配卡槽: /usr/redis/bin/redis-cli --cluster create 192.168.212.163:7000 192.168.212.163:7001 192.168.212.163:7002 192.168.212.163:7003 192.168.212.163:7004 19...

封神之路 371

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RedisCluster集群搭建、代码访问以及原理分析

RedisCluster集群搭建、代码访问以及原理分析

weixin_44795847的博客 1826

【Redis专题】RedisCluster集群运维与核心原理剖析

前面我们介绍过了Redis主从哨兵的方案。在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在【访问瞬断】的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率 为了解决上面说的问题,Redis3,0

qq_32681589的博客 1343

微服务架构-Redis实战原理剖析-078:RedisCluster扩容与缩容&Jedis支持集群原理

078:RedisCluster扩容与缩容&Jedis支持集群原理1 快速回顾搭建RedisCluster集群2 RedisCluster快速实现扩容原理3 搭建RedisCluster集群4 RedisCluster快速的实现卡槽扩容5 master节点宕机之后重新实现选举6 RedisCluster快速的实现缩容7 JedisCluster支持集群原理 1 快速回顾搭建RedisCluster集群 课程内容: RedisCluster高可用实现原理 RedisCluster如何实现卡槽扩容 R

枫火的博客 332

Redis(五)——RedisCluster 真正的redis集群原理解析

无论是主从模式还是sentinel哨兵模式,所有客户端请求最终还是由一台redis服务器负担,虽然redis拥有极高的吞吐量,但是单个服务器的性能还是有限的,当数据量请求量超过单台redis服务器负载时,就需要一个真正的redis集群:RedisCluster RedisCluster 是redis作者自己提供的redis集群化方案,它是一个去中心化的集群。RedisCluster将所有数据划分到16384个slots(槽)中,每个redis节点负责一部分的slots,并且每个redis节点读存储全部的槽

不要总是等明天再开始 529

RedisCluster集群实现原理之哈希槽(hash slot)

Redis集群使用数据分片,而非一致性哈希来实现,一个Redis集群包含16384个哈希槽(hash slot),使用set所存储的数据都属于16384个哈希槽中的其中一个,集群使用 crc16(key) % 16384 来计算key属于哪个槽。 举例说明,现需要搭建Cluster集群6个节点,redis的端口号依次为7000,7001,7002,7003,7004,7005,6个节点分为3组,一主(master)一从的形式 如下图 计算每组的哈希槽排序,每组=16384/3=5461 那么: 第

huangyuewang的专栏 3661

最详细RedisCluster集群环境搭建与原理详解

上篇文章我们介绍了redis主从复制和哨兵模式搭建附上 链接地址 现在我们介绍下RedisCluster模式,我们知道redis 哨兵模式已经可以实现redis的主从自动故障切换,但是哨兵模式无法实现水平扩展,也就是我们只能有一个master节点提供服务,如果我们要缓存的数据非常多,那单机的master就无法满足我们的需求,redis给我们提供了一种更好的方式也就是Redis Cluster。Redis cluster实现了所有的哨兵模式的功能并且还可以支持水平扩展 先说明下环境,我们将完全实现生产环境的模

humanhaunt的博客 865

* Redis 3.2.1集群 —— 集群原理 及 RedisCluster简介

redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。 官方的一个简单测试:     测试完成了50个并发执行100000个请求。     设置和获取的值是一个256字节字符串。     结果:读的速度是110000次/s,写的速度是81000次/s 在这么快的读写速度下,对于一般程序来说足够用了,但是对于访问量特别大的网站来说,还是

yifanSJ的博客 489

Redis集群使用指南

2018年10月 Redis 发布了最新稳定版本 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为使用 C语言编写的 redis-cli的方式,使集群的构建方式复杂度大大降低。我们先来看一下redis-cluster架构图,如下图所示。可以看到Redis集群是没有统一入口的,采用的是去中心化设计思想,客户端连集群中的哪台设备都行,集群中各个设备之间都定时进行交互,以便知道节点是否还正常工作。环境搭建开始:

z_ssyy的博客 628

RedisCluster集群扩容与缩容

目录一、传统Redis集群存在那些问题二、传统RedisCluster集群的原理三、RedisCluster集群模式环境搭建四、RedisCluster集群模式扩容节点五、RedisCluster集群模式缩容节点 一、传统Redis集群存在那些问题 Redis哨兵集群模式,每个节点都保存全量同步数据,冗余的数据比较多;而在Redis Cluster模式中集群中采用分片集群模式,可以减少冗余数据,缺点就是构建该集群模式成本非常高, 二、传统RedisCluster集群的原理 Redis3.0开始官方推出了集群

记录各种Bug解决案例及日常学习内容 1358

redis集群模式详解

redis集群模式详解

zhenghuishengq的博客 5245

Redis Cluster集群原理+三主三从交叉复制实战+故障切换(十)

Redis Cluster集群原理+实战+故障切换 文章目录Redis Cluster集群原理+实战+故障切换1.redis cluster原理概念1.1.cluster架构概念1.2.redis cluster不合理的架构图1.3.部署一个cluster三主三从集群具体步骤1.4.环境准备2.部署redis cluster节点2.1.redis-1配置2.2.redis-2配置2.3.redis-3配置2.4.查看redis cluster进程2.5.查看集群信息文件内容3.配置cluster集群互相发现

江晓龙的博客 1万+
上一篇: Spring Boot2.0+Redis+Ehcache实现二级缓存
下一篇: RedisCluster集群搭建
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值