【学习笔记】Redis学习笔记——第17章 集群

第17章 集群

17.1 节点

使用cluster meet命令将其他节点添加到当前节点集群中

17.1.1 启动节点

通过cluster-enabled设置来决定是否启用集群

17.1.2 集群数据结构

每个节点都保存了自己及其他节点的IP端口号等信息

17.1.3 cluster meet命令的实现

是收到命令的节点和新节点握手建立连接,并传播这个节点给其他集群节点握手认识

17.2 槽指派

整个数据库为16384个槽(即常说的桶),每个节点处理0-16384个槽,当有槽未被指派时,整个集群处于下线状态

17.2.1 记录节点的槽指派信息

一个二进制的数组,如果相对位置上值为1,则代表需要处理该槽

17.2.2 传播节点的槽指派信息

节点会将自己处理的槽信息发给其他节点

17.2.3 记录集群所有槽的指派信息

每一个节点都记录了每个槽是由哪个节点来处理

17.2.4 Cluster addslot命令的实现

1>检查指派的槽是否是未指派状态
2>分配并记录在clusterNode中

17.3 在集群中执行命令

17.3.1 计算键属于哪个槽

通过Key计算出一个0-16383的值来决定键属于哪个槽

17.3.2 判断槽是否由当前节点负责处理

查看键的槽计算值是否有自己处理,否则的话引导向负责该槽处理的节点

17.3.3 Moved错误

如果访问的节点不负责处理这个槽,会返回Moved错误引导客户端访问正确的节点,在集群模式下的客户端会屏蔽掉这个错误

17.3.4 节点数据库的实现

与单机相比差别不大,键与槽的关系使用跳表保存

17.4 重新分片

1>通知源节点与目标节点
2>将源节点数据分批复制到目标节点

17.5 ASK错误

在重新分片期间,被重分配的槽同时由源节点与目标节点操作,取决于键的被转移情况。(PS:所以此时会出现两个节点同时处理一个槽的状况)

17.5.1 Cluster Setslot importing 命令的实现

使用一个数组来记录正在被导入的槽

17.5.2 Cluster Setslot mingrating命令的实现

使用一个数组来记录正在被迁移的槽

17.5.3 ASK错误

如果键属于当前节点负责处理的槽,但没有找到,会到正在被迁移的槽中寻找,并返回给客户端ASK错误并返回该键被迁移到的节点(与Moved错误相似)

17.5.4 ASKING命令

使用该命令可以让节点破例操作正在被导入的槽中的键

17.5.5 ASK与Moved错误的区别

主要可以理解为中间态与稳定态的区别

17.6 复制与故障转移

从节点接替主节点负责的槽继续进行工作

17.7 消息

redis通过发送与接收消息来进行通信,消息有其自己的格式

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

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

相关文章

flatpak vscode

解决集成终端无法使用主机命令和字体的问题 Shift Ctrl P:搜索user set,点击带JSON的,把这些加进去 {"terminal.integrated.defaultProfile.linux": "bash","terminal.integrated.profiles.linux": {"…

(2024,通用逼近定理(UAT),函数逼近,Kolmogorov–Arnold定理(KAT),任意深度/宽度的网络逼近)综述

A Survey on Universal Approximation Theorems 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 神经网络(NN) 3. 通用逼近定理&#xff0…

我的NAS是怎么连接Amazon Web Services S3的

作为IT爱好者,很多家庭都配备了Network Attached Storage(NAS),用于存储和管理大量数据。一个常见的挑战是如何实现异地备份,以确保数据的安全性和可恢复性。以下是一些解决方案和工具,可以帮助用户有效地管…

“手撕”MySQL的索引

目录 二、索引的作用 三、索引的缺点 四、如何使用索引 查看索引: 创建索引: ​编辑 删除索引: 五、索引的底层原理 那什么是B树,什么是B树呢? B树的好处: 总结: 一、什么是索引 索…

C语言的周末小练习(贰)

周末小练习&#xff1a; 5、输入身高和体重&#xff0c;计算BMI指数(BMI w/(h*h))。 #include <stdio.h>int main() {float w,h,BMI;/*printf("请输入体重\n");scanf("%f",&w);printf("请输入身高\n");scanf("%f",&h…

vue3 快速入门 (五) : Flex布局

1. 如何变成Flex布局 变成Flex容器&#xff0c;只需在容器布局的节点的CSS中&#xff0c;增加display : flex .mylayout {/* 省略了其他代码 */display: flex; }2. flex direction : 方向 row : 以行排列 row-reverse &#xff1a; 以行反向排列 column &#xff1a;以列排列…

Matlab编程资源库(11)多项式计算

一、多项式的四则运算 1&#xff0e;多项式的加减运算 2&#xff0e;多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里&#xff0c;P1、P2是两个多项式系数向量。 3&#xff0e;多项式除法 函数[Q,r]deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项…

Hive第四天

3.HIVE 调优&#xff1a; 需要调优的几个方面&#xff1a; 1.HIVE语句执行不了 2.HIVE查询语句&#xff0c;在集群中执行时&#xff0c;数据无法落地 HIVE执行时&#xff0c;一开始语句检查没有问题&#xff0c;生成了多个JOB&#xff0c; …

【前端 09】JavaScript中的对象与JSON

JavaScript中的对象与JSON 在JavaScript中&#xff0c;对象和JSON&#xff08;JavaScript Object Notation&#xff09;是两个紧密相连但又有区别的概念。它们都在数据处理和交换中扮演着重要角色。本文将详细讲解JavaScript中的自定义对象以及JSON对象的基本概念、格式、用法…

基于微信小程序+SpringBoot+Vue的教务管理系统(带1w+文档)

基于微信小程序SpringBootVue的教务管理系统(带1w文档) 基于微信小程序SpringBootVue的教务管理系统(带1w文档) 在目前的情况下&#xff0c;可以引进一款基于web的高校教务管理系统这样的现代化管理工具&#xff0c;这个工具就是解决上述问题的最好的解决方案。它不仅可以实时完…

python拼接字符串方法

文章目录 1. 使用加号&#xff08;&#xff09;2. 使用str.join()方法3. 使用格式化字符串&#xff08;f-strings, % 操作符, .format() 方法&#xff09;4. 使用列表推导式和join()结合 性能对比 在Python中&#xff0c;字符串拼接是将两个或多个字符串合并成一个新字符串的过…

AJAX(3)——请求方法

请求方法 请求方法&#xff1a;对服务器资源&#xff0c;要执行的操作 请求方法操作GET获取数据POST提交数据PUT修改数据&#xff08;全部&#xff09;DELETE删除数据PATCH修改数据&#xff08;部分&#xff09; 数据提交 当数据需要在服务器上保存 axios请求配置 URL&…

IPython的SVG展示台:%%svg命令全解析

IPython的SVG展示台&#xff1a;%%svg命令全解析 在IPython和Jupyter Notebook中&#xff0c;%%svg是一个魔术命令&#xff0c;它允许用户直接在Notebook中嵌入和显示SVG&#xff08;Scalable Vector Graphics&#xff09;图像。SVG是一种基于XML的矢量图形格式&#xff0c;非…

EasyUI 的 DataGrid 插件,通过扩展属性的方式给序号列增加个性化标题

在 EasyUI 的 DataGrid 中&#xff0c;没有直接的属性可以设置行号列的标题&#xff0c;但是你可以通过扩展的方法来实现这一功能。通过扩展 EasyUI 的 DataGrid 插件&#xff0c;来增加一个 ​​rownumberTitle​​ 属性&#xff0c;以便通过属性来设置行号列的标题。 以下是…

生成RSA公钥的n值

简介&#xff1a;RSA算法是一种非对称加密算法&#xff0c;与对称加密算法不同的是,RSA算法有两个不同的密钥,一个是公钥,一个是私钥。 原理是&#xff1a;根据数论&#xff0c;寻求两个大素数比较简单&#xff0c;而将它们的乘积进行因式分解却极其困难&#xff0c;因此可以将…

速盾:CDN是什么?CDN的原理和作用是什么?

随着互联网的飞速发展&#xff0c;越来越多的网站和应用程序需要处理大量的数据和用户请求。在面临高并发流量和网络延迟的情况下&#xff0c;为了提供更快、更稳定的网站访问体验&#xff0c;CDN&#xff08;Content Delivery Network&#xff0c;内容分发网络&#xff09;应运…

【leetcode 详解】生成特殊数字的最少操作【中等】(C++思路精析)

题目见下&#xff1a; 测试数据: 解题思路笔记&#xff1a; 最初拿到这道题是很蒙的&#xff0c;联想不到什么数据结构的模型&#xff08;肯定是笔者积累太少了&#xff09;&#xff0c;甚至惯性地想怎么实现“删除数字”的操作&#xff1a;在原字符串中抽出一个字符然后将剩…

VS code 与Pycharm 的使用区别(个人)

注明&#xff1a;本文从这开始VS code简称VS&#xff0c;Pycharm简称PY 安装包大小 VS:PY 1:0 安装后实际大小 vs py VS:PY 2:0 界面ui&#xff08;简易&#xff09; vs py VS:PY 2:1 启动速度 VS:PY 3:1 注&#xff1a;以上为个人测评&#xff0c;无特殊意图

为什么AI会一本正经地胡说八道

泛泛地说&#xff0c;AI一本正经地胡说八道的原因可以归结为&#xff1a;AI的理解能力受到其训练数据和算法的限制&#xff0c;如果问题表达不清晰或者背景信息不足&#xff0c;AI可能会产生错误的推理或输出&#xff1b;AI语言模型本质上是基于统计学习和模式匹配的&#xff0…

第一个设计模式——单例模式

目录 一、特点&#xff1a; 二、实现单例模式步骤 三、饿汉式 四、懒汉式 五、双重检查锁 六、静态内部类 七、枚举 八、可能被反序列化和反射破坏什么意思&#xff1f; 九、如何解决呢&#xff1f; 一、特点&#xff1a; 唯一性&#xff0c;单例模式确保程序中只有一…