四十七、Redis分片集群

目录

一、分片集群结构

二、散列插槽

1、Redis如何判断某个key应该在哪个实例?

2、如何将同一类数据固定的保存在同一个Redis实例?

三、集群伸缩

四、故障转移

1、当集群中有一个master宕机时

(1)自动转移

(2)手动转移

五、RedisTemplate访问分片集群


一、分片集群结构

主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决:

海量数据存储问题
高并发写的问题

使用分片集群可以解决上述问题,分片集群特征:

集群中有多个 master ,每个 master 保存不同数据
每个 master 都可以有多个 slave 节点
master 之间通过 ping 监测彼此健康状态
客户端请求可以访问集群任意节点,最终都会被转发到正确节点

二、散列插槽

Redis会把每一个master节点映射到0~1638316384个插槽(hash slot)上,查看集群信息时就能看到:(每个节点分配一部分插槽

数据key不是与节点绑定,而是与插槽绑定。redis会根据key的有效部分计算插槽值,分两种情况:

key 中包含 "{}" ,且“ {} ”中至少包含 1 个字符,“ {} ”中的部分是有效部分
key 中不包含“ {} ”,整个 key 都是有效部分

例如:keynum,那么就根据num计算,如果是{itcast}num,则根据itcast计算。计算方式是利用CRC16算法得到一个hash值,然后对16384取余,得到的结果就是slot值。

1、Redis如何判断某个key应该在哪个实例?

16384 个插槽分配到不同的实例
根据 key 的有效部分计算哈希值,对 16384 取余
余数作为插槽,寻找插槽所在实例即可

2、如何将同一类数据固定的保存在同一个Redis实例?

这一类数据使用相同的有效部分,例如 key 都以 { typeId } 为前缀

三、集群伸缩

集群命令

可以创建新的master节点和slave节点

四、故障转移

1、当集群中有一个master宕机时

(1)自动转移
  1. 首先是该实例与其它实例失去连接
  2. 然后是疑似宕机
  3. 最后是确定下线,自动提升一个slave为新的master
(2)手动转移

输入命令即可

手动的Failover支持三种不同模式:

缺省:默认的流程,如图 1~6步
force :省略了对 offset 的一致性校验
takeover :直接执行第5步,忽略数据一致性、忽略master 状态和其它 master 的意见

五、RedisTemplate访问分片集群

RedisTemplate底层同样基于lettuce实现了分片集群的支持,而使用的步骤与哨兵模式基本一致:

1. 引入 redis starter 依赖
2. 配置分片集群地址
3. 配置读写分离

与哨兵模式相比,其中只有分片集群的配置方式略有差异,如下:

spring:redis:cluster:nodes: # 指定分片集群的每一个节点信息- 192.168.150.101:7001- 192.168.150.101:7002- 192.168.150.101:7003- 192.168.150.101:8001- 192.168.150.101:8002- 192.168.150.101:8003

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

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

相关文章

Winform高效获取控件(Control)方法 + 源码分析

背景:风好大,睡觉有点怕,起床敲代码了 之前学的都是都是通过遍历控件(Controls),判断控件名是否相等来获取Control 其实直接通过:Controls["控件名"],就可以获得需要的控件 为什么呢…

【STM32独立看门狗(IWDG) 】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、看门狗是什么?1.简介2. 主要功能3.独立看门狗如何工作4.寄存器写保护5.看门狗 看门时间 二、使用步骤1.开启时钟2.初始化看门狗3.开启看门狗4.喂…

使用 TensorFlow 创建生产级机器学习模型(基于数据流编程的符号数学系统)——学习笔记

资源出处:初学者的 TensorFlow 2.0 教程 | TensorFlow Core (google.cn) 前言 对于新框架的学习,阅读官方文档是一种非常有效的方法。官方文档通常提供了关于框架的详细信息、使用方法和示例代码,可以帮助你快速了解和掌握框架的使用。 如…

MFC逆向之CrackMe Level3 过反调试 + 写注册机

今天我来分享一下,过反调试的方法以及使用IDA还原代码 写注册机的过程 由于内容太多,我准备分为两个帖子写,这个帖子主要是写IDA还原代码,下一个帖子是写反调试的分析以及过反调试和异常 这个CrackMe Level3是一个朋友发我的,我也不知道他在哪里弄的,我感觉挺好玩的,对反调试…

DS冲刺整理做题定理(四)查找与排序

最后一期更新,考试之前应该不会再出该专题了,之后有时间会出一些有关链表的代码题,其他章节只挑选重点的总结~ 一.查找 1.顺序查找 又被称为线性查找,对顺序表和链表都使用~基本思想是从某一端开始,逐个检查关键字是否…

VR云游打造沉浸式文旅新体验,延伸智慧文旅新业态

从“跃然纸上”到“映入眼帘”,随着国家数字化战略的深入实施,文旅产业的数字化转型正在不断加快,“沉浸式”逐渐成为了文旅消费新热点。VR技术与文旅产业相融合,新产品、新模式、新业态不断涌现,文旅资源逐渐“活”起…

智能插座是什么

智能插座 电工电气百科 文章目录 智能插座前言一、智能插座是什么二、智能插座的类别三、智能插座的原理总结 前言 智能插座的应用广泛,可以用于智能家居系统中的电器控制,也可以应用在办公室、商业场所和工业控制中,方便快捷地实现电器的远…

Milesight VPN server.js 任意文件读取漏洞(CVE-2023-23907)

0x01 产品简介 MilesightVPN 是一款软件,一个 Milesight 产品的 VPN 通道设置过程更加完善,并可通过网络服务器界面连接状态。 0x02 漏洞概述 MilesightVPN server.js接口处存在文件读取漏洞,攻击者可通过该漏洞读取系统重要文件&#xff…

西南交通大学【数电实验7---按键防抖动设计】

实验电路图、状态图、程序代码、仿真代码、仿真波形图(可以只写出核心功能代码,代码要有注释) 一共四个状态:1.未按下时空闲状态 2.按下抖动滤除状态 3.按下稳定状态 4.释放抖动滤除状态 在第一个状态时,等待按键按下&…

Nginx七层代理,四层代理 + Tomcat多实例部署

目录 1.tomcat多实例部署 准备两台虚拟机 进入pc1 pc2同时安装jdk 进入pc1 pc2安装tomcat PC1配置(192.168.88.50) 安装tomcat多实例 tomcat2中修改端口 启动tomcat1 tomcat2 分别在三个tomcat服务上部署jsp的动态页面 2.nginx的七层代理&…

使用set和emit在uni-app中实现响应式属性和自定义事件

在uni-app中,我们经常需要动态设置响应式属性,并且通过自定义事件来实现组件间的通信。这时,我们可以使用set和emit来轻松实现这些功能。 使用$set动态设置响应式属性 在Vue中,我们可以使用来动态设置响应式属性。在uniapp中使用…

Linux部署MySQL5.7和8.0版本 | CentOS和Ubuntu系统详细步骤安装

一、MySQL数据库管理系统安装部署【简单】 简介 MySQL数据库管理系统(后续简称MySQL),是一款知名的数据库系统,其特点是:轻量、简单、功能丰富。 MySQL数据库可谓是软件行业的明星产品,无论是后端开发、…