redis集群读写,容错切换,从属调整,扩容,缩容

news2024/11/24 13:31:40

rediscluster 读写一定要注意redis实例的区间实例范围。需要路由到位。
在这里插入图片描述
比如
在这里插入图片描述
hashsolt=hash(k1) mod 16384=12706,而12706槽位不在6391上,在6393上。

如何让rediscluster 路由到槽呢?
redis-cli命令尾部加上 -c即可。防止路由失效。如果k1不在6391上,则自动路由到6393上。

查看某个key 属于对应的槽位值
cluster keysolt key

主从容错切换

1.rediscluster 某个主机宕机,其从机会立即上位。
2.当之前的宕机主机正常启动后,其会变为新主机的从机
3.再说一遍,集群不能保证数据的一致性(100%),一定有数据丢失的情况

手动节点从属调整

常用命令
cluster failover
redis-cli 的从机将 与其主机调换角色。
该命令只能在群集slave节点执行,让slave节点进行一次人工故障切换。

人工故障切换是预期的操作,而非发生了真正的故障,目的是以一种安全的方式(数据无丢失)将当前master节点和其中一个slave节点(执行cluster-failover的节点)交换角色。 流程如下:

  1. 当前slave节点告知其master节点停止处理来自客户端的请求

  2. master 节点将当前replication offset 回复给该slave节点

  3. 该slave节点在未同步至replication offset之前不做任何操作,以保证master传来的数据均被处理。

  4. 该slave 节点进行故障转移,从群集中大多数的master节点获取epoch,然后广播自己的最新配置

  5. 原master节点收到配置更新:解除客户端的访问阻塞,回复重定向信息,以便客户端可以和新master通信。

rediscluster 扩容

1.从新启动两个实例端分别为:6397,6398,此时他们都master
2.将新增的6397节点(空槽位)加入原集群

//命令
redis-cli -a 111111 --cluster add-node 
127.0.0.1:6397 127.0.0.1:6391
// 127.0.0.1:6397就是将要作为master的主节点
// 6391相当于原来集群中的领路人。实际就是6387通过6381找到集群
//记住,这里6397虽然加入集群,但是这个集群中没有任何槽位

3.重新分派槽号

//命令
redis-cli -a 111111 --cluster reshard 127.0.0.1:6381

在这里插入图片描述
执行命令后会询问你要移到多少个槽位 16384/4 =4096

在这里插入图片描述
然后还需要我们确认将这4086个槽位分配到那个master,但是是我们刚加入的master6397,查询下6397的ID 复制过来,接续按下面提示操作就好。

在这里插入图片描述
由上图可以看到,新节点的槽位是由 其他3个master中分别均出1364个槽位得来的。这样原来的3个master剩下的槽位没有改变,所以最大减少了扩容时槽位移动问题。

4.为主节点6378分配从节点6379

redis-cli -cluster add-node ip:新slave端口 ip:新master端口 --cluster-slave --cluster-master-id 新主机节点id

rediscluster 缩容

  1. 先清除从节点6398
    redis-cli -a 111111 --cluster check 127.0.0.1:6398,记录从节点 ID
    从集群中将6398从节点删除
    redis-cli -a 111111 --cluster del-node 127.0.0.1:6398 6398从节点ID

  2. 清出来的槽号从新分配给6381(也可以重新分配到6392,6393等多个节点,就是要分配多次)
    redis-cli -a 111111 --cluster reshared 127.0.0.1:6391
    按提示输入分配的源头(6397的nodeId),分配的槽位数

  3. 再删除主节点 6397
    redis-cli -a 111111 --cluster del-node 127.0.0.1:6397 ,6397主节点ID

  4. 恢复成3主3从

rediscluster 其他补充

  1. 不同redis实例下槽位多键操作支持不好,这个时候占位符登场。
    不在同一个reids实例的槽位,无法通过mget,mset等批处理命令。可以通过{}来定义同一组的概念。使key中{}相同内容的键值放到同一个实例的槽位中去。
    比如 mset k1{x} v1 k2{x} v2 k3{x} v3,mget k1{x} v1 k2{x} v2 k3{x} v3

  2. cluster-require-full-converage
    有个问题,redis-cluster集群有3主3从结构,如果一台down机,数据还可不可以写入?
    答案:如果一台主机切从机down机后,集群显示不可用状态。
    如果cluster-require-full-converage配置成no的时候,表示一个主机及从机下线,集群仍然可用。

  3. cluster countkeysinslot 槽位号 : 查看这个槽位是否被占用

  4. cluster keyslot 键名称(k1):该键落在那个槽位

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

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

相关文章

企业如何将采购成本最小化?

从人员成本到运输和手续费,采购成本涵盖了广泛的费用,这些费用可能会迅速增加。这就是为什么要有一个明确的采购流程,鼓励竞争性招标,并使供应商轻松与你合作。但是,降低采购成本的最有效方法也许是通过实施一个采购软…

电力导线镭射光防外破预警系统

电力导线镭射光防外破预警系统 一、产品描述: 我司研发生产了一款型号为TLKS-PMG-WPI的电力导线镭射光防外破预警系统,是与电力设计时代发展升级的产品,在配电网需要实时在线监测的前景下,设备的稳定可靠性也是一种前所未有的挑战…

Linux 设备驱动程序(三)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux 设备驱动程序(三&#xf…

WIN提权 令牌窃取进程注入

令牌窃取(鸡肋玩意 2008包括2008以下) 令牌,又叫token,是系统临时产生的秘钥,相当于账号密码,用来决定是否允许此次请求和判断此次请求是属于哪一个用户。 win7一下的版本可以尝试 这里使用msf上自带的令…

CCF-CSP 202006-1 线性分类器

根据高中知识我们知道&#xff0c;通过将点带入直线方程得到大于0或等于0或小于0&#xff0c;其中大于0与小于0的情况即对应两个点在直线的两边 据此&#xff0c;我们取最后一个输入的A点作为标准、最后一个输入的B点作为标准&#xff0c;记录下他们的>0还是<0&#xff0…

市面上常见的语音芯片的IO口有哪些作用

语音芯片的IO口有哪些作用&#xff1f; 语音芯片的IO口一般有多种用途&#xff0c;包括以下几种&#xff1a; 1. 语音输入&#xff1a;可以通过外部麦克风接口&#xff0c;将外部声音信号输入到语音芯片中&#xff0c;进行语音信号处理。 2. 语音输出&#xff1a;语音芯片可…

UTP网络编程入门案例

说明&#xff1a;UTP是面向无连接的&#xff0c;不可靠的协议&#xff0c;即传输数据时不会确定对方是否在线&#xff0c;优点是效率高。 DatagramSocket & DatagramPacket DatagramSocket是使用UDP协议的Socket&#xff0c;它的作用是接收和发送数据包&#xff1b; Dat…

数字信号处理6

昨天简单的复习了一下离散时间信号是什么以及系统的概念、系统要做的工作和系统中几个简单的原件&#xff0c;今天跟着昨天的内容继续学习。 一、离散时间系统的分类&#xff1a; 为什么要对系统进行分类呢&#xff0c;这就像是我们对函数进行分类一样&#xff0c;有些函数有…

提供免费样机模板素材的好网站推荐

说到原型样机模板&#xff0c;设计师当然并不陌生&#xff0c;因为经常在设计师完成作品后&#xff0c;为了更好地展示作品&#xff0c;通常将设计作品应用于真正的原型样机模板&#xff0c;可以快速在现实场景中展示设计作品&#xff0c;选择好的原型样机模板&#xff0c;操作…

超低功耗SUB 1G无线收发芯片+32位 Soc芯片UM2080F32 无线集抄/测温/养老院人员定位

UM2080F32是一款超低功耗 32 位 IoTP&#xff1a;ARMCortex-M0&#xff0c;64KB Flash&#xff0c;16KB SRAM&#xff0c;Sub-1GHz 射频收发器。工作于200MHz~960MHz 范围内。 UM2080F32 内部还集成了 CAN、12 位 SAR ADC、UART、SPI、QSPI、I2C 等通用外围通讯接口&#xff0c…

网络管理。

简介 网络接口名称规则 ls /etc/sysconfig/network-scripts/ -a NetworkManager服务 网络管理器是一个动态网络的控制器与配置系统&#xff0c;它用于当网络设备可用时保持设备和连接开启并激活默认情况下&#xff0c;CentOs/RHEL 7已安装网络管理器&#xff0c;并处于启用状态…

【Java this关键字】如何使用以及注意点 访问成员变量,访问成员方法,构造方法内调用构造方法

欢迎收看本篇文章 介绍 Java this 关键字的使用以及某些注意点 欢迎oomsday点踩&#xff0c;欢迎其他人点赞 &#x1f60b; Java this关键字 ⭐ this 关键字的作用⭐ this 注意点⭐ this 用法访问成员变量访问成员方法在构造方法内调用构造方法 ⭐ this 关键字的作用 在 Java …

C10K-C10M进阶(高并发的真正理解)

1、一台计算机可以连接的TCP受什么限制&#xff1f; 能打开文件描述符的限制。默认是1024&#xff0c;可以修改。 端口号的限制&#xff0c;65535&#xff0c;因为TCP头部16位的端口号&#xff0c;其中1024以上可以用。如果是客户端&#xff0c;最多可以打开6万多的文件。如果是…

车载测试之车联网OTA安全实践

在SDV的大趋势下&#xff0c;汽车零部件智能化水平不断提高&#xff0c;车辆内部搭载的软件也越来越多。毫无疑问&#xff0c;车辆复杂度的提高必将带来维护上的困难&#xff0c;车企要如何面对更新迭代速度越来越快的软件、固件系统&#xff1f;OTA&#xff08;over the air&a…

论文笔记: Trajectory Clustering: A Partition-and-Group Framework

07 Sigmoid 使用类DBSCAN的思路对轨迹聚类 1 intro 1.1 轨迹聚类 现有的轨迹聚类算法是将相似的轨迹作为一个整体进行聚类&#xff0c;从而发现共同的轨迹。 但是这样容易错过一些共同的子轨迹&#xff08;sub-trajectories&#xff09;。而在实际中&#xff0c;当我们对特…

运行 100 万个并发任务需要多少内存?

在这篇博文中&#xff0c;我深入研究了 Rust、Go、Java、C#、Python、Node.js 和 Elixir 等流行语言在异步和多线程编程之间的内存消耗比较。 前段时间&#xff0c;我不得不比较一些旨在处理大量网络连接的计算机程序的性能。我看到这些程序的内存消耗存在巨大差异&#xff0c…

【Atlas200】华为AIPP配置文件使用

目录 AIPP介绍图像处理顺序例子&#xff1a;YUV420SP_U8转BGR格式归一化配置对应公式crop及padding功能配置生效AIPP转换模板 AIPP介绍 华为的AIPP&#xff08;AI Preprocessing&#xff09;是一种面向AI应用的图像预处理技术&#xff0c;旨在提高AI应用的效率和精度。AIPP支持…

C语言深度解析--数组

目录 一维数组的创建与初始化 一维数组的创建&#xff1a; 一维数组的初始化&#xff1a; 一维数组的使用&#xff1a; 一维数组在内存中的存储&#xff1a; 二维数组的创建与初始化 二维数组的创建&#xff1a; 二维数组的初始化&#xff1a; 二维数组的使用&#xf…

是面试官放水,还是公司太缺人了?华为原来这么容易就进了...

华为是大企业&#xff0c;是不是很难进去啊&#xff1f;” “在华为做软件测试&#xff0c;能得到很好的发展吗&#xff1f; 一进去就有9.5K&#xff0c;其实也没有想的那么难” 直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾…

以“智”提质丨信创呼叫

随着人工智能、大数据、云计算等新兴技术飞速发展&#xff0c;呼叫中心、全媒体智能客服等现已被广泛应用于多个行业领域。其中&#xff0c;呼叫中心作为政企对外服务的重要窗口&#xff0c;已从“传统电话营销”发展到“智能呼叫中心”阶段&#xff0c;以客户服务为核心&#…