精通Redis 11 之 Redis cluster槽的迁移原理分析

OpenClaw 3.22深度解析:gRPC流式通信与Session隔离架构升级 Agent框架是构建智能自动化服务的核心基础设施,其稳定性与并发能力直接决定企业级AI应用的落地质量。传统基于HTTP长轮询和全局状态管理的插件架构,易引发阻塞、资源争抢与事件丢失等问题,尤其在飞书/微信Webhook集成、多Tab并发及金融分析等高负载场景中表现明显。OpenClaw 3.22通过引入gRPC双向流式通信与Session上下文隔离机制,从原理上解耦执行单元、实现资源硬隔离,并辅以强制健康检查与熔断策略,显著提升系统可观测性与长期驻留可靠性。该升级不仅优化了插件加载延迟与CPU占用率,更支撑 阅读详情

一、槽的迁移

redis 提供redis-trlib 可以让运维手工调整槽位分配情况,
set key 的时候可以通过在key字符串里嵌入tag 标记,强制把key 所挂的槽位等于tag 所在的槽位

如图 所示,Redis 客户端向“缓存节点 1”发出请求,此时“缓存节点 1”正向“缓存节点 2”迁移数据,如果没有命中对应的 Slot,它会返回客户端一个 ASK 重定向请求并且告诉“缓存节点 2”的地址。
客户端向“缓存节点 2”发送 Asking 命令,询问需要的数据是否在“缓存节点 2”上,“缓存节点 2”接到消息以后返回数据是否存在的结果。

大致流程:

  • 从源点获取内容
  • 保存到目标节点
  • 从源节点删除内容

在这里插入图片描述

详细图

注意:

redis-cluster 数据迁移是同步的,在目标节点执行restore 指令到源节点删除key 之间,源节点主线程处于阻塞状态,直达key 被成功删除。

所以操作的时候,不能在白天,选择夜深人静的时候。

如果迁移过程中遇到网络故障,整个槽的迁移进行到一半,这市两个节点依旧处于中间过渡状态,待下次迁移工具连接,会提示用户继续进行迁移。

迁移时的性能:

如果可以都很小 migrate 的指令执行的很快,不会影响正常客户端访问,如果可以的内容很大,migrate会阻塞指令,会同时导致源节点和目标节点卡顿,影响集群的稳定性,在集群状态下业务逻辑尽可能避免产生很大的key

思考:redis 支持的最大key 是

key 最大值 512m
key是按照hash查找的 ,当然越小 ,理论上越快 。 并没有必然要多长的限制 ,尽量短就可以了!
Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。
关于key的几条规则:
太长的键值不是个好主意,例如1024字节的键值就不是个好主意,不仅因为消耗内存,而且在数据中查找这类键值的计算成本很高。
太短的键值通常也不是好主意,如果你要用”u:1000:pwd”来代替”user:1000:password”,这没有什么问题,但后者更易阅读,并且由此增加的空间消耗相对于key
object和value object本身来说很小。当然,没人阻止您一定要用更短的键值节省一丁点儿空间。
最好坚持一种模式。例如:”object-type🆔field”就是个不错的注意,像这样”user:1000:password”。我喜欢对多单词的字段名中加上一个点,就像这样:”comment🔢reply.to”。

迁移时客户端的访问流程

迁移过程中,两个节点对应的槽位都存在部分key数据,客户端首先尝试访问旧的节点,如果对应的数据还在旧节点里,旧节点正常处理。
如果不在旧节点,分两种情况 1,在新节点 2,不存在

旧节点不清楚,所以向客户端返回 -ASK targetNodeAddr重定向指令
客户单去目标节点执行一个ASKING 指令,然后再在新节点执行原先的操作指令

执行ASKING 避免形成重定向循环。
ASKING 告诉新节点,不能不理,当做自己的槽位来处理。

正常情况下:

一个指令 一个ttl

迁移情况下 三个ttl

参考书籍:《Redis 深度历险》

未经作者同意,本文禁止任何形式的转载。

scratch航天梦主题课程作品分享,包含ppt、素材包 而今年多国都将发射探测器尝试登陆月球,2023年或将称为“登月年”,请大家发挥创新思维,以“星辰大海”为创作主题,搜集相关信息 、展开联想,为实现升空 、探测 、取样贡献创意!即使去淘宝买的素材,也要从百度网盘,但素材太多大了或者太多文件,也要充值百度网盘超级会员才能保存,提高下载速度。同学们大家好,今天我们就要开始航天主题-嫦娥五号探月工程系列的编程课程了,不仅可以学习到很多航天知识,了解本次嫦娥五号的发射历程,还能让我们用编程遨游太空呢。即使下载了,也要上传,不是特别方便,尤其是不好查找。 阅读详情

相关推荐

Spring Boot 微服务 API 网关实战:Spring Cloud Gateway 整合,搞定路由转发 + 统一认证 + 限流熔断(企业级落地)

摘要:本文详细介绍了SpringCloud Gateway在微服务架构中的核心作用与实现方案。作为API网关,它解决了服务入口分散、认证冗余、流量失控等痛点,提供路由转发、统一认证、限流熔断等能力。文章通过图书管理系统案例,演示了SpringBoot整合Gateway的全流程,包括基础路由配置、JWT全局认证、局部参数校验、Sentinel限流熔断以及Nacos动态路由等核心功能实现。特别强调了企业级落地中的关键注意事项,如路由顺序、过滤器执行顺序、HTTPS配置等。该方案能有效构建统一、安全、高效的微服务

lamehsl的专栏 1381

redis集群数据分片原理——哈希槽

哈希槽 redis集群用的是哈希槽,而不是简单哈希和一致性哈希。 槽位的转移,即为槽位ID不变,而是槽位地址变了。集群只需要记住槽位ID和槽位地址映射就可以了。crc计算一个key的结果是一个恒定的槽位ID,即使是槽位发生了迁移,集群根据槽位ID还是可以找到槽位新地址的。 简单哈希 (摘自:https://www.jianshu.com/p/6ad87a1f070e 仅作个人备份,浏览请看原文) 假设有三台机,数据落在哪台机的算法为: c = Hash(key) % 3 例如 key A.

仅做个人笔记 2520

【Office激活】学校正版Office已激活成功仍弹出激活窗口

学校正版Office激活问题:已激活成功仍弹出激活窗口

ESCM_的博客 1万+

MIGRATE

命令的内部实现是这样的:它在当前实例对给定 key 执行 命令 ,将它序列化,然后传送到目标实例,目标实例再使用 对数据进行反序列化,并将反序列化所得的数据添加到数据库中;唯一不可能发生的情况就是丢失 key ,因此,如果一个客户端执行 命令,并且不幸遇上 IOERR 错误,那么这个客户端唯一要做的就是检查自己数据库上的 key 是否已经被正确地删除。将 key 原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除。

weixin_47832121的博客 149

智能车实战——极速越野组GPS与惯导融合定位导航全解析

本文深入解析了智能车极速越野组中GPS与惯导模块的融合定位导航技术。通过对比GPS的全局定位与惯导的高频姿态感知,详细阐述了如何利用MM32SPN27主控,将两者数据融合以实现精准、实时的车辆控制。内容涵盖硬件选型、软件数据处理、PID控制及系统调试等实战环节,为智能车开发者提供了一套完整的解决方案。

pz8901234的博客 1203

Google AdSense收款前必做:W-8BEN税务认证的3个关键选择与1个提交时机小技巧

本文深入解析Google AdSense收款前必须完成的W-8BEN税务认证,重点介绍账号类型选择、特殊税率勾选、美国活动界定等3个关键决策,并分享提交时机的小技巧,帮助站长高效通过审核,确保广告收入顺利到账。

weixin_30443731的博客 671

redis节点迁移(主从同步过程及深度理解RDB持久化)

开始前先说明一下环境 redis规模是在kubernetes环境下搭建的集群三主三从模式 使用hostpath将数据保存在宿主机上 6个POD分布在三台机器上 需求是要把6个POD分开调度到6台机器上 迁移的大概想法就是 redis的三个master节点不做迁移 只迁移三个slave 因为是生产环境中 安全第一 迁移前保证集群状态正常以及确认master节点分布在已有的主机节点上 确认新迁移的主机节点数据目录存在 备份数据 三个master节点就可以 这里就不贴三个图片了 通过控制器调整sl

weixin_47329659的博客 1104

基于FME—三调篇—尖锐角及小缝隙处理

1 问题分析: 该功能实现在FME较为简单,相对ARCGIS模型构建器以及ARCGIS ENGINE,FME更适合无代码基础的人群。在三调内业数据处理要求中,尖锐角是不允许存在的。本文基于FME实现了对尖锐角的自动查询与消除以及自动处理在消除尖锐角过程中产生的缝隙,并进行了拓扑检查,实现自动化批量处理尖锐角的功能,提高工作效率。 2 总体思路: 2.1 实现功能分析: 1.找出小于指定角度的尖锐角...

qq_33315579的博客 9180

redis实战第九篇 集群扩容自动迁移槽(redis-cli)

上文讲解过自动迁移槽实现集群扩容(传送门) 1.准备新节点 安装redis,参考传送门 节点配置,参考传送门 2.将节点加入集群 redis-cli --cluster add-node {new host}:{new port} {exist host}:{exist port} 加入集群 redis-cli --cluster add-node 192.168.0.207:6380 192....

超人不会飞 6488

(一)DaVinci Developer AutoSAR工具 如何新建SWC、Component、RTE工程,超级详细步骤,赚到

​ 1,创建SWC,第一步需要创建一个App组件类型,首先点击Object Brower菜单,然后左键Application Component Types 选项,然后右键New Application Component Type,组件类型的作用是来后续实例一个Compoent 2、 Properties 选项卡中Nane中输入Type的名字,注意根据规范命名规则已CtAp开头,其他默认就好 ​

weixin_42602687的博客 3574

Ubuntu 18.04下Freesurfer 7.2.0安装全攻略:从下载到环境配置一步到位

本文详细介绍了在Ubuntu 18.04系统上安装Freesurfer 7.2.0的完整流程,包括系统准备、依赖安装、下载解压、环境配置、许可证获取及性能优化。Freesurfer作为神经影像分析的重要工具,支持皮层重建和体积分割等复杂任务,适用于阿尔茨海默症等神经系统疾病研究。指南还提供了常见问题解决方案和实际应用案例,帮助用户快速搭建高效的神经影像分析平台。

omega的博客 996

Redis集群--故障转移的过程(原理)

本文介绍Redis集群(Cluster)的故障转移的流程。

IT利刃出鞘的博客 6553

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

【北大核心-代码复现】基于 VMD-FFCM-iTransformer 光伏功率短期预测

766

简历上还不敢写精通redis?来看看这份阿里强推的redis深度历险成长手册!集群+应用+拓展+原理+源码齐飞

Redis 是互联网技术架构在存储系统中使用得为广泛的中间件,也是中高级后端工程师技术面试中面试官喜欢问的工程技能之一,特别是那些优秀的互联网公司,通常要求面试者不仅仅掌握 Redis 基础用法,还要理解 Redis 内部实现的细节原理。 这份手册分为分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇让高阶.

JavaJIAMIN的博客 3453

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redis集群扩容与缩容:实战操作指南

本文介绍了Redis集群扩容与缩容的实战操作。扩容步骤包括准备新节点、加入集群、设置为主节点和分配槽位;缩容则需先迁移槽位再删除节点。文章还列举了操作过程中可能遇到的数据迁移失败和节点状态异常问题及解决方法。掌握这些操作能帮助根据业务需求灵活调整集群规模,确保系统高效运行。

fykam的博客 632

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Redis 实战修炼与原理进阶专栏大纲

Redis 8.6.x 实战专栏摘要 本专栏采用「业务痛点→剧本对话→代码实战→总结」的四步结构,系统讲解 Redis 从入门到生产落地的全栈知识。基础篇(1-16章)聚焦单机 Redis,涵盖数据结构、缓存模式与基础运维;中高级篇(17-40章)深入高并发架构、分布式一致性、源码调优等进阶内容。通过电商场景贯穿实战,包含验证码、购物车、排行榜等典型模块。特色三人剧本(小胖/小白/大师)生动解析技术决策过程,配套可运行代码和故障演练场景,帮助开发者快速掌握 Redis 核心能力与生产级最佳实践。

davidwang456的专栏 917

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

第40章:【高级篇综合实战】从零设计企业级 Redis 平台

本文摘要: 一家大型企业集团内部存在严重的Redis管理混乱问题,全集团分散着327个不同版本的Redis实例,存在重大安全隐患。近年来发生了三次重大事故:双十一期间主库OOM导致支付链路雪崩、春节红包期间Cluster集群Gossip风暴引发服务延迟、Module升级不当导致全量数据丢失。根因分析显示,问题核心在于缺乏统一的实例生命周期管理、标准化高可用方案、安全基线和容量治理。

davidwang456的专栏 1237

Redis实战笔记:从数据结构到高并发缓存架构设计

Redis作为高性能的键值对内存数据库,其核心在于对多种数据结构的支持,如字符串、哈希、列表、集合和有序集合。理解这些数据结构及其操作的时间复杂度是高效使用Redis的基础。其单线程模型和内存存储机制带来了极高的读写性能,并通过RDB和AOF持久化机制保障数据安全。在技术价值上,Redis广泛应用于缓存、会话存储、消息队列和排行榜等场景,能显著提升系统响应速度并降低数据库负载。面对高并发场景,需要深入理解缓存穿透、击穿、雪崩等经典问题及其解决方案,例如使用布隆过滤器、分布式锁和随机过期时间等策略。本文基于一

weixin_34372728的博客 341

Redis面试核心知识点与实战技巧全解析

Redis作为高性能键值数据库,其核心价值在于内存存储与数据结构优化。通过SDS、跳跃表等底层设计实现O(1)时间复杂度操作,支持String、Hash等5种基础数据结构及HyperLogLog等扩展类型。在分布式系统中,Redis常被用于实现缓存、分布式锁和消息队列三大场景,解决高并发、数据一致性和系统解耦问题。典型应用包括UV统计、地理位置计算和秒杀系统,其中布隆过滤器和原子操作是关键实现技术。掌握Redis持久化(RDB/AOF)、集群方案(Cluster/Codis)及性能优化技巧,能有效应对缓存穿

weixin_33795743的博客 377

第38章:Redis Module 开发:自定义命令与数据类型

本文探讨了Redis Module的开发实践与风险挑战。文章从互联网金融风控和电商库存两个实际场景出发,揭示了传统Lua脚本方案的局限性,引出了Redis Module的必要性。通过三个关键对话,系统阐述了Module的本质特性(与Redis的深度集成关系)、两种开发模式(自定义命令与自定义数据类型)的选择策略,以及开发过程中常见的六大陷阱(主线程阻塞、内存泄漏、RDB兼容性等)。最后提出了一个"风险计数器"模块的教学案例,涵盖了从初始化到版本升级的全生命周期开发要点。

davidwang456的专栏 372

Docker从入门到精通

构建镜像的时候,从一个最基本的操作系统开始,每个构建提交的操作都相当于做一层的修改,增加了 一层文件系统,一层层往上叠加,上层的修改会覆盖底层该位置的可见性,这也很容易理解,就像上层 把底层遮住了一样,当使用镜像的时候,我们只会看到一个完全的整体,不知道里面有几层,镜像即创建容器的模版,含有启动容器所需要的文件系统及所需要的内容,因此镜像主要用于方便和快 速的创建并启动容器 镜像含里面是一层层的文件系统,,当后期有额外的需求时,只要在之前的 DockerFile添加或者修改响应的命令即可重新生成新的。

u010055345的专栏 359

软件工程师能力跃迁:从写代码到定义问题的四层模型

在数字化深入产业各环节的今天,软件工程师的核心价值正从‘实现功能’转向‘定义问题’。其底层逻辑在于技术与业务耦合度持续加深,单一编程能力已无法应对高并发、多系统集成、实时数据治理等真实场景需求。理解分层能力模型(执行层→整合层→定义层→源头层)成为职业进化的关键路径,它揭示了市场对‘接口治理能力’‘业务翻译能力’和‘杠杆思维’的迫切渴求。尤其在制造业数字化、AIGC工程化、中小企降本增效等主流趋势下,具备跨系统协同经验与业务指标量化意识的工程师,正获得显著薪资溢价与项目主导权。本文基于三年一线招聘与交付数据

weixin_30832405的博客 351

AI数据栈重构:RDBMS、图数据库与HTAP协同设计原理

在AI原生应用中,单一数据库已无法支撑‘实时性+关系推理+强一致性’复合需求。RDBMS作为可信事实锚点保障数据准确与可审计,图数据库实现多跳因果链的动态关系建模,HTAP则消除OLTP/OLAP割裂带来的延迟失真。三者并非简单并列,而是构成特征工程流水线的底层神经突触——RDBMS定边界、Graph拓维度、HTAP保时效。这种混合数据架构已成为大模型知识库、智能风控、实时推荐等场景的技术标配,其核心价值在于让AI决策真正基于最新鲜、最关联、最可信的数据闭环。

weixin_34416649的博客 425

大模型应用稳定性革命:静默式韧性层原理与落地实践

在大模型工程化落地中,系统稳定性正从‘靠重试和降级’转向‘协议级内建韧性’。所谓韧性层,本质是嵌入网络协议栈第七层的透明调度机制,通过token级动态分片、语义等价fallback、无状态上下文锚定等技术,在不修改业务代码前提下消除延迟抖动与输出漂移。它并非新API或SDK,而是类似TCP重传机制的基础设施能力,直接作用于LLM请求链路的必经路径。当前以Anthropic企业级韧性层为代表,已实现P99延迟归零、JSON解析失败率下降超40倍等效果,标志着LLM应用正式进入‘稳态计算’阶段。

weixin_30423977的博客 481

程序员核心竞争力:数据与逻辑解耦的工程直觉

在现代分布式系统中,'数据库+编程语言'的单一技术栈已难以应对实时风控、高并发秒杀、跨源数据分析等复杂场景。理解数据生命周期(产生→传输→存储→计算→消费)和计算范式本质(命令式/函数式/响应式),是构建可扩展架构的基础。掌握ClickHouse列存聚合、Redis内存索引、Flink流处理等引擎的适用边界,结合Rust所有权、Go Goroutine调度、SQL与NoSQL语义差异等底层原理,才能实现从‘建表思维’到‘数据契约思维’、从‘语法熟练’到‘范式驾驭’的跃迁。本文聚焦真实项目中的技术选型逻辑与认

diedangxiang4092的博客 545

MLOps生产化四层架构:可观测性、弹性伸缩与数据漂移防御实战

机器学习模型上线不是部署完成,而是进入高可用、可监控、可演进的生产生命周期。其核心在于将模型服务解耦为推理、适配、流量治理与可观测性四层,通过Triton实现GPU隔离与动态批处理,用Go构建低延迟业务胶水层,依托Envoy实现灰度发布与熔断,再以VictoriaMetrics+定制SLO驱动数据漂移响应。这种分层设计显著降低MTTR、提升资源利用率,并让模型从‘能跑’升级为‘敢用’的基础设施——尤其适用于面临数据漂移告警泛滥、GPU显存OOM频发、灰度发布不可控等典型MLOps痛点的算法与SRE团队。

weixin_30673611的博客 322
上一篇: Redis 缓存穿透、缓存雪崩、缓存击穿、缓存抖动
下一篇: jvisualvm分析hprof文件
hamish-wu
博客等级 码龄15年 2814粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值