【Redis 开发】Redis分片集群

news2024/12/23 19:48:51

分片集群

  • 分片集群
    • 搭建分片集群
  • 散列插槽
  • 集群伸缩
  • 故障转移
  • RedisTemplate访问分片集群

分片集群

在我们使用哨兵进行高并发读的问题,但是还有海量数据存储,高并发写的问题,使用分片集群可以解决:
特征:

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

搭建分片集群

  1. /tmp目录下创建7001 7002 7003 8001 8002 8003目录
  2. /tmp目录下创建一个新的redis.conf文件,重新创建配置信息
port 6379
# 开启集群功能
cluster-enabled yes
# 集群的配置文件名称,不需要我们创建,由redis自己维护
cluster-config-file /tmp/6379/nodes.conf
#节点心跳失败的超时时间
cluster-node-timeout 5000
#持久化文件存放目录
dir /tmp/6379
#绑定地址
bind 0.0.0.0
#让redis后台执行
daemonize yes
#注册的实例ip
replica-announce-ip 192.168.75.135
#保护模式	
protected-mode no
#数据库数量
databases 1
#日志
logfile /tmp/6379/run.log 
  1. redis.conf配置文件拷贝到各个目录中去
    echo 7001 7002 7003 8001 8002 8003 | xargs -t -n 1 cp redis.conf
  2. 修改每个目录下的redis.conf文件,将其中的6379修改为所在目录一致:
    printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I {} -t sed -i 's/6379/{}/g' {}/redis.conf
  3. /tmp目录下一键启动所有服务
    printf '%s\n' 7001 7002 7003 8001 8002 8003 | xargs -I {} -t redis-server {}/redis.conf
    关闭所有进程ps -ef | grep redis | awk '{print $2}'| xargs kill
  4. 创建集群:redis-cli --cluster create 192.168.75.135:7001 192.168.75.135:7002 192.168.75.135:7003 192.168.75.135:8001 192.168.75.135:8002 192.168.75.135:8003 --cluster-replicas 1

在这里插入图片描述
7. 通过redis-cli -p 7001 cluster nodes命令来查看集群的状态

散列插槽

Redis会把每一个master节点映射到0~16383共16384个插槽(hash slot)上

插槽的利用是为了分辨我们所添加的数据最后存储在了哪一个master上

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

  1. key中包含{},且{}中至少包含一个字符,{}中的部分是有效的部分
  2. key中不包含{},整个key是有效部分

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

为什么key要与插槽进行绑定:
在主节点出现宕机的情况下,如果使用插槽,可以进行将宕机节点对应的插槽转移到对应或者的节点
在这里插入图片描述
注意:在集群模式下客户端连接redis命令:redis-cli -c -p 7001(-c表示集群模式)
在这里插入图片描述

集群伸缩

就是在集群已经建立好的情况下,添加和删除节点
向集群中添加一个新的节点master节点

  1. 在/tmp文件下创建目录7004 mkdir 7004

  2. 复制新的redis.conf文件到7004中

  3. 修改配置文件中的端口为7004

  4. 运行redis服务redis-server 7004/redis.conf

  5. 将该节点插入到集群当中
    redis-cli --cluster add-node 192.168.75.135:7004 192.168.75.135.7001
    在这里插入图片描述
    后边的--cluster-slave:参数将添加的节点设置为从节点,并可以指定对应的主节点,如果没有参数默认添加的节点为主节点

  6. 注意因为key是按照插槽存储,添加节点后还要重新分片
    redis-cli --cluster reshard 192.168.75.135:7001:将7001的主节点插槽分配
    redis-cli -p 7001 shutdown: 使一个Redis停机

故障转移

当集群中有一个master宕机会发生什么?

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

手动切换主从关系:
利用cluster failover命令可以让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点上,实现无感的数据迁移
在这里插入图片描述
手动的failover支持三种模式:
缺省:如上图的流程,首先发送请求,得到现在的offset值,判断是否一致,不一致进行追赶,然后进行故障转移
force:省略了对offset的一致性校验
takeover:直接执行第5步,忽略数据一致性,忽略master状态和其他master的意见

RedisTemplate访问分片集群

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

  1. 引入redis的starter依赖
  2. 配置分片集群地址
  3. 配置读写分离
    与哨兵模式相比,其中只有分片集群的配置方式将所有的主从节点都填写进去:
    在这里插入图片描述

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

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

相关文章

干细胞样本保存对液氮罐有使用温度要求吗

温度是确保生物样本质量的核心要素,对使用容器的温度控制就成了样本保存项目的观察重点。在生物实验研究和干细胞技术的实际应用情景中,液氮罐内部温度对维持干细胞样本的活性与稳定性起到了决定性作用。 为了确保干细胞样本在长期的保存中仍保持较优的…

VUE+TS使用elementUI的el-checkbox双重v-for循环做勾选

html部分 <template><div class"hello"><el-form :model"elForm"> <!-- cities对象数组形式 --><el-form-item v-for"(item, topIndex) in cities" :key"topIndex"> <!--item.checked 是每一个item…

web题目实操(6)ssti模板注入学习

1.BUUCTF之[MRCTF2020]你传你呢-------文件解析漏洞 &#xff08;1&#xff09;打开环境后就看到一个很特别的文件上传的界面&#xff0c;以为是一题简单的文件上传漏洞&#xff0c;实不然后面做了才发现并非那样&#xff08;2&#xff09;这里本来应该是先上传php文件&#x…

神之浩劫2测试资格100%获取教程 测试资格获取方法教程

《神之浩劫》是一款基于Unreal 3&#xff08;虚幻3&#xff09;游戏引擎开发的3D团队竞技游戏&#xff0c;由美国Hi-Rez工作室开发、腾讯全球代理。2013年10月31日&#xff0c;游戏开启国服首测&#xff0c;并于2014年3月25日在美国公测。2018年1月20日&#xff0c;国服并入全球…

某科聚网一体化运营平台 catchByUrl 文件上传致RCE漏洞复现

0x01 产品简介 某科聚网一体化运营平台是一种综合性的软件平台&#xff0c;旨在帮助企业实现运营管理的集中化、自动化和协同化。该平台通常提供一系列功能模块和工具&#xff0c;用于支持企业在销售、营销、客户关系管理、供应链管理、人力资源管理等方面的运营活动。 0x02 …

25计算机考研院校数据分析 | 电子科技大学

电子科技大学&#xff08;University of Electronic Science and Technology of China&#xff09;坐落于四川省会成都市&#xff0c;直属中华人民共和国教育部&#xff0c;由教育部、工业和信息化部、四川省和成都市共建。是国家“985工程”、“211工程”、“世界一流大学和一…

FineBI学习:K线图

效果图 底表结构&#xff1a;日期、股票代码、股票名称、开盘价、收盘价、最高价、最低价 步骤&#xff1a; 横轴&#xff1a;日期 纵轴&#xff1a;开盘价、最低价 选择【自定义图表】&#xff0c;或【瀑布图】 新建字段&#xff1a;价差&#xff08;收盘-开盘&#xf…

OMG 一个方法的调用改动居然优化了一倍性能!!! ConcurrentHashMap.computeIfAbsent 学习

背景 前提&#xff1a;抖音小程序有qps的监控&#xff0c;如果说qps过低就会导致小程序被下架掉。 业务代码非常的简单 一个easy的查询 但是当并非达到 20就 会发现qps降低了10倍 业务需求实现大概这么一个链路 ok 那么此前我们在认识一下 computeIfAbsent 方法&#xff08;大…

访学/博后/联培博士关注|不同国家的英语口音辨识度训练

在访问学者、博士后及联合培养的申请过程中&#xff0c;接收方多数都要求英文面试。如果导师的母语为非英语国家&#xff0c;将会带有口音&#xff0c;这样更增加了英语面试难度。如何提升不同国家的英语口音辨识度&#xff0c;使自己的英语表达更加流利&#xff0c;知识人网小…

探索的时光 (整数三分)

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 5 3 2 1 2 3 输出 28 思路&#xff1a; 根据题意&#xff0c;已经给出了运算函数 当我们看到这些函数的时候&#xff0c;联想一下&#xff0c;它们的单调性&#xff0c;以…

算法学习Day1——【数据结构】单调栈

1.什么是单调栈以及单调栈的作用 &#xff08;1&#xff09;定义 顾名思义&#xff0c;单调栈是一个有序的栈&#xff0c;可能从栈顶到栈底单调递增&#xff08;单调递增栈&#xff09;&#xff0c;也有可能从栈顶到栈底单调递减&#xff08;单调递减栈&#xff09;。 &…

一文带你搞懂AI前沿技术AIGC

人工智能&#xff08;AI&#xff09;领域的发展日新月异&#xff0c;而AIGC&#xff08;Adversarial Instance Generation and Correction&#xff09;作为其中的一项前沿技术备受关注。本文将带你深入探索AIGC&#xff0c;解析其背后的原理、应用场景以及未来发展趋势。 什么…

ACK One x OpenKruiseGame 全球游戏服多地域一致性交付最佳实践

作者&#xff1a;刘秋阳、蔡靖 前言 在当今全球一体化的经济环境下&#xff0c;数字娱乐产业正日益成为文化和商业交流的有力代表。在此背景下大量游戏厂商尝试游戏出海并取得了令人瞩目的成绩&#xff0c;许多游戏以全球同服架构吸引着世界各地广泛的玩家群体。游戏全球化部…

UDP文件传输工具之UDP传输的优点和缺点

在当今快节奏的网络通信时代&#xff0c;UDP以其独特的优势&#xff0c;在众多应用场景中扮演着关键角色。本文将深入探讨UDP的优缺点及其应用场景&#xff0c;并重点介绍镭速软件如何通过技术创新&#xff0c;显著提升UDP传输的效率和可靠性。 UDP传输的优点 UDP的显著优势在…

2024王炸组合!基于Mamba的遥感图像处理引爆顶会!

对比传统方法&#xff0c;基于Mamba的遥感图像处理在计算效率和分析精度方面遥遥领先&#xff0c;Mamba遥感也成为了论文研究的新方向。 具体来说&#xff0c;在融合高分辨率的空间图像和低分辨率的光谱图像获取综合信息方面&#xff0c;Mamba可以提升性能&#xff0c;同时保持…

特斯拉全自动驾驶能力(FSD)或与百度合作;小红书内测自研大模型丨 RTE 开发者日报 Vol.196

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

【工具资源】药物研发平台;物理符号优化平台;手术视频可视化解答

在 AI for Science 的规模化推广过程中&#xff0c;低门槛使用且开源的高性能工具至关重要。一方面&#xff0c;科研人员能够通过上手使用&#xff0c;更加直观地了解 AI 的能力&#xff1b;另一方面&#xff0c;当团队中缺乏交叉学科人才时&#xff0c;已有工具能够减少科研人…

[华为OD] C卷 服务器cpu交换 现有两组服务器QA和B,每组有多个算力不同的CPU 100

题目&#xff1a; 现有两组服务器QA和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能 力&#xff0c;B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。 为了让两组服务器的算力相等&#xff0c;允许从每组各选出一个CPU进行一次交换。 求两…

C++学习第十课:指针陷阱与引用传递(阶段练习题)

C学习第十课&#xff1a;指针陷阱与引用传递 在C中&#xff0c;指针和引用是两个强大的特性&#xff0c;但它们也可能导致一些常见的错误。本课将深入探讨使用指针时可能遇到的问题&#xff0c;并介绍引用的概念和使用方式。 大纲标题与代码详解 1. 日常使用指针容易犯的错误…

CSS的布局模式

前言&#xff1a; 我们可以看到京东的官网上的一些例子&#xff08;如下图&#xff09;&#xff0c;在同一排中能够存在多个div&#xff0c;这是通过布局方式&#xff08;例如浮动&#xff09;来实现的。 CSS传统的布局模式&#xff1a; <1>普通流&#xff08;又称之为标…