Redis集群(caluster)

news2024/11/16 12:30:53

Redis集群(caluster)

Redis集群是一个提供在多个Redis节点间共享数据的程序集

在这里插入图片描述

1. Redis集群的作用:

Redis 集群是 Redis 的分布式实现,在设计中按重要性顺序具有以下目标:

  • 高性能和线性可扩展性,多达 1000 个节点。没有代理,使用异步复制,并且不对值执行合并操作。
  • 可接受的写入安全程度:系统尝试(以最大努力)保留来自与大多数主节点连接的客户端的所有写入。通常有一些小窗口,其中确认的写入可能会丢失。当客户端位于少数分区中时,丢失已确认写入的 Windows 会更大。
  • 可用性:Redis 集群能够在大多数主节点可访问的分区中幸存下来,并且对于不再可访问的每个主节点,至少有一个可访问的副本。此外,使用副本迁移,不再由任何副本复制的主节点将从多个副本覆盖的主节点接收一个。

本文档中描述的内容在 Redis 3.0 或更高版本中实现

在这里插入图片描述

2. redis集群的数据分片

redis集群没有使用一致性hash,而是引入了哈希槽的概念

redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,进群的每个节点负责一部分hash槽

举个例子,比如集群有三个节点,那么:

在这里插入图片描述

也就是说,某个key通过CRC16算法,算出的值是9766,

那么它就会被第二个节点储存

3. 分片的好处

这种使用哈希槽的结构很容易添加或者删除节点

比如我们想要添加节点D,我需要从节点A,B,C中得部分槽到D上,如果我想要移除节点A,需要将A中的槽移动到B,C上

由于从一个节点将哈希槽移动到另一个节点,并不会停止服务,所以无论添加或删除或修改某个节点的哈希槽数量都不会造成集群不可用的状态

4. 为什么哈希槽的数量是16384

在这里插入图片描述

==

在这里插入图片描述

5.-c 命令

启动redis服务器-c命令,会自动将键值存入对应哈希槽的节点里面

cluster keyslot k1 //查询c1在那个集群里面

6. redis集群的主从切换

在这里插入图片描述

6381主机宕机了,对应的从机6384是否上位?

在这里插入图片描述

我们发现6384成功上位,成为master

6381如果重连,是否会上位?

在这里插入图片描述

我们发现和哨兵模式一样,6381成为6384的从机!!!

在这里插入图片描述

如何回调主从关系?

CLUSTER FAILOVER

执行命令后,我们惊奇的发现:

6381重新变回主机身份

6384成为从机

在这里插入图片描述

7. 集群扩容

在这里插入图片描述

增加集群6387–6388

在这里插入图片描述

新增加的集群还没有槽位:

在这里插入图片描述

重新分配槽号:

在这里插入图片描述

服务器会询问你移动多少槽位,我们默认是16384除以N

在这里插入图片描述

并把6387的node id 复制过去:

在这里插入图片描述

相当于用6387接收4096个槽位

我们重新执行命令,发现:
在这里插入图片描述

槽位确实分配过去了!!!

在这里插入图片描述

并且发现6387的槽位是前三家匀过去的!!!

为6387添加从机:

在这里插入图片描述

总结流程:

6387通过6381介绍加入集群

redis-cli -a 111111 --cluster add-node 127.0.0.1 6387 127.0.0.1 6381

分配哈希槽给6387

redis-cli -a 111111 --cluster reshard 127.0.0.1 6387

4096

输入6387的node id

给6387加入从机6388

redis-cli -a 111111 --cluster add-node 127.0.0.1 6388 127.0.0.1 6387 --cluster-slave --cluster-master-id 新主机节点的ID

文字描述:

首先通过已有的主机节点来使得新的主机节点加入集群,然后通过reshard关键字分配给新主机节点哈希槽
输入分配哈希槽的数量和新主机节点ID得到分配
最后通过--cluster add-node 命令给新主机节点添加从机节点

8. 集群缩容

在这里插入图片描述

第一步,删除从节点6388:

redis-cli -a 111111 --cluster del-node 127.0.0.1 6388 6388的节点ID

在这里插入图片描述

第二步,将6387的槽号清空,重新分配,本例全部分配给6381:

redis-cli -a 111111 --cluster reshard 127.0.0.1 6381

你想要移动多少个槽位: 4096

接收槽位的节点ID: 6381的节点ID

Source ID : 6387的节点ID

done

在这里插入图片描述

==

在这里插入图片描述

==

在这里插入图片描述
在这里插入图片描述

==

另外我们发现,6387失去哈希槽后自动降级为从机节点

在这里插入图片描述

并且跟着6381混

第三步:删除6387

redis-cli -a 111111 --cluster del-node 127.0.0.1 6387 6387节点ID

9. redis集群总结

在这里插入图片描述

==

在这里插入图片描述

==

在这里插入图片描述

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

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

相关文章

Pyqt应用相关之PDF汇总案例说明

相信有不少小伙伴遇到了想要把多份pdf汇总到一起的问题,本期就带来用Pyqt界面制作的关于pdf汇总的教学流程。 def pdf_files_btn_click(self):files QFileDialog.getOpenFileNames(self, os.getcwd(), opentxt, PDF Files(*.pdf))file_list files[0]self.pdf_file…

2023年6月DAMA-CDGP数据治理专家认证请尽快报名啦!

目前6月DAMA-CDGP数据治理认证考试开放报名地区有:北京、上海、广州、深圳、长沙、呼和浩特。 目前南京、济南、西安、杭州等地区还在接近开考人数中,打算参加6月考试的朋友们可以抓紧时间报名啦!!! 5月初,…

(一)服务发现组件 Eureka

1、Eureka 简介 Eureka 是Spring Cloud Netflix 微服务套件中的一部分, 它基于Netflix Eureka 做了二次封装, 主要负责完成微服务架构中的服务治理功能。我们只需通过简单引入依赖和注解配置就能让Spring Boot 构建的微服务应用轻松地与Eureka 服务治理…

两百左右哪款蓝牙耳机好?两百左右高性价比蓝牙耳机推荐

现如今,蓝牙耳机无疑已经成为学生党外出的标配了。比起一些动辄上千的蓝牙耳机,两百左右的似乎更符合学生党的选择。接下来,我来给大家推荐几款两百左右高性价比的蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&…

Spring 循环依赖处理之三级缓存设计

一、思考 1、Spring是如何解决循环依赖问题的? 2、为什么要使用三级缓存?二级缓存能否解决问题? 3、提前暴露对象暴露的是什么? 4、主要源码 二、循环依赖 1、介绍 如上图,创建A之前需要先创建B,创建B之前需要先创建A,造成循环依赖。 由于A没创建完成&am…

C++:IO流

CIO流 C系统实现了一个庞大的类库,其中ios为基类,其他类都是直接或间接派生自ios类 注意: 1. cin为缓冲流。键盘输入的数据保存在缓冲区中,当要提取时,是从缓冲区中拿。如果一次输 入过多,会留在那儿慢慢…

今年SMETA审核费用即将涨价

【今年SMETA审核费用即将涨价】 SMETA全称( Sedex Members Ethical Trade Audit ),即Sedex会员社会道德贸易审核,它是Sedex发起的一种负责任的供应链审计方法/项目。 Sedex是一个全球性的责任商业平台,SMETA是审核方法…

大白话chatGPT GPT的发展区别

大白话chatGPT & GPT的发展区别 从GPT名字理解chatGPTchatGPT三步曲GPT-1到GPT-4GPT-1~GPT-4的相同点GPT-1~GPT-4的区别GPT-1——pre-training fine-tune,自监督学习无监督预训练有监督微调GPT-2——zero-shot,无监督学习,多任务学习GPT…

机器学习快速入门1(机器学习概念与数据预处理)

文章目录 1.机器学习介绍2 机器学习7大步骤3.数据预处理八大策略4 缺省值、异常值、重复值处理**rand、randn、randint区别**normal与randn缺失值处理判断缺失值删除缺失行填充缺失值 重复值处理异常值处理 5 抽样VS全量数据为什么需要抽样简单随机抽样等距抽样分层抽样整群抽样…

【PR 基础】轨道遮罩键、交叉溶解的简单使用

在上篇博客(【PR 基础】裁剪工具的简单使用)介绍了裁剪效果的使用,本篇博客在上篇的基础上继续添加 轨道遮罩键、交叉溶解的效果。 效果 步骤 1.可以先将恢复裁剪区域的关键帧删除 2. 接下来添加字幕,点击 新建-》旧版标题 点击…

Ceph入门到精通-Ceph 编排器简介

第 1 章 Ceph 编排器简介 作为存储管理员,您可以将 Ceph 编排器与 Cephadm 实用程序搭配使用,能够发现设备并在 Red Hat Ceph Storage 集群中创建服务。 1.1. 使用 Ceph Orchestrator Red Hat Ceph Storage Orchestrators 是经理模块,主要…

深入JVM了解Java对象实例化过程

文章目录 一、对象创建方式二、对象产生步骤1、判断对象是否已经加载、链接、初始化2、为对象分配内存空间3、处理并发问题3.1 TLAB 4、初始化零值5、完善对象内存布局的信息6、调用对象的实例化方法 <init>7、总结 三、对象的内存布局1、对象头1.1 运行时元数据&#xf…

大学生创业项目-校园外卖的创业优势在哪里?

在当今的外卖行业中&#xff0c;校园外卖已成为外卖行业的垂直分类领域。 与我们通常使用的美团、饿了么平台不同&#xff0c;校园外卖平台需要招聘校园学生和校园内外人员兼职作为校园骑手&#xff0c;完成“最后一公里”的外卖送餐方式。 对于平台运营商来说&#xff0c;配…

生成树协议三姐妹:STP、RSTP 和 MSTP,附思科和华为双厂商命令示例

在计算机网络中&#xff0c;为了保证网络拓扑结构的稳定性和可靠性&#xff0c;需要采用一些协议进行网络的管理和控制。其中&#xff0c;STP、RSTP 和 MSTP 是三种常用的网络管理协议。本文将分别介绍这三种协议&#xff0c;并且使用华为、思科两家厂商作为案例给出相应的命令…

( “树” 之 Trie) 677. 键值映射 ——【Leetcode每日一题】

知识点回顾 &#xff1a; Trie&#xff0c;又称前缀树或字典树&#xff0c;用于判断字符串是否存在或者是否具有某种字符串前缀。 ❓677. 键值映射 难度&#xff1a;中等 设计一个 map &#xff0c;满足以下几点: 字符串表示键&#xff0c;整数表示值返回具有前缀等于给定字…

Scrapy框架 -- 深度爬取并持久化保存图片

一、新建一个Scrapy项目daimg scrapy startproject daimg 二、进入该项目并创建爬虫文件daimgpc cd daimg scrapy genspider daimgpc www.xxx.com 三、修改配置文件settings.py ROBOTSTXT_OBEY False LOG_LEVEL ERROR USER_AGENT "Mozilla/5.0 (Windows NT 10.0; …

Git快速入门

Git快速入门 版本控制什么是版本控制常见的版本控制工具版本控制分类Git与SVN的主要区别 聊聊Git的历史Git环境配置软件下载启动GitGit配置 Git基本理论&#xff08;重要&#xff09;三个区域工作流程 Git项目搭建创建工作目录与常用指令本地仓库搭建克隆远程仓库 Git文件操作文…

Springsecurity课程笔记06-13章基于数据库的方法授权

动力节点Springsecurity视频课程 6 密码处理 6.1 为什么要加密&#xff1f; csdn 密码泄露事件 泄露事件经过&#xff1a;https://www.williamlong.info/archives/2933.html 泄露数据分析&#xff1a;https://blog.csdn.net/crazyhacking/article/details/10443849 6.2加密…

平均薪资28K,测试开发的涨薪史,给我看哭了...

金三银四的涨薪季要来了&#xff0c;看着身边的同事有的晋升&#xff0c;有的收获30%的涨薪&#xff0c;他们都拥有哪些影响涨薪的硬核技能呢&#xff1f;互联网行业的高薪是众所周知的&#xff0c;而测试作为互联网公司越来越重视的技术开发模块&#xff0c;薪资收入同样一路走…

Tomcat部署与优化

前言 Tomcat是一款免费、开放源代码的Web应用服务器&#xff0c;是Apache软件基金会的一个核心开源项目&#xff0c;属于轻量级应用服务器&#xff0c;通常意义上的 Web 服务器接受请求后&#xff0c;只是单纯地响应静态资源&#xff0c;如 HTML 文件&#xff0c;图片文件等&a…