Redis热key大key详解
不要阻挡我走向成功,勇者配享所有,感想敢干
hotkey热key
大量请求可能会使redis节点流量不均匀,进而导致宕机,继而打到数据库崩溃;因此需要对热key优化
引发问题:
- 分片服务瘫痪
- 可能打到数据库,造成数据库瘫痪
- 单分片CPU高
如何发现热key?
-
使用自带的–hotkeys查找,需配置LFU淘汰策略。缺点全局扫描,实时性差
-
业务代码记录key访问次数上报聚合:缺点侵入性强
-
TCP抓包:解析RESP流量,统计key访问频率
-
京东hotkey
Redis-rdb-tools:分析RDB文件中的 大key和热key -
云服务可视化工具
如何解决hotkey?
-
二级缓存本地缓存:如Caffeine等,清理时可用redis的pub/sub(不可靠);可用MQ的广播模式
-
- 本地缓存->redis->DB
-
数据分片:key分散到多个服务器:比如可以求shard=对key的hash值,newkey=key+“_”+shard分配到多个节点中
-
读写分离,读从从节点上请求
-
限流降级
bigkey大key
产生的场景
- 数据结构使用不当
- 未及时清理垃圾数据,没过期时间
- 对业务预估不准确
不同的场景对于大key的判定规则是不一样的啊
都有哪些危害呢?
危害
内存不均匀:单value较大时,可能会导致节点之间的内存使用不均匀,间接地影响key的部分和负载不均匀;
阻塞请求:redis为单线程,单value较大读写需要较长的处理时间,会阻塞后续的请求处理;
阻塞网络:单value较大时会占用服务器网卡较多带宽,可能会影响该服务器上的其他Redis实例或者应用
影响主从同步
影响扩容
影响AOF重写
总之就是它很不好就是了
如何发现呢?
- Redis4.0提供了–bigkeys,–hotkeys命令;生产慎用
- 可借助redis可视化工具another redis desktop manager查看
- RDB文件分析
- bigkey巡检
- 也可用:https://github.com/sripathikrishnan/redis-rdb-tools
- 可以定时任务在吞吐量低峰时reditemplate查询size并保存(生产可用)
如何解决?
- 评估业务是否必要,不必要就优化掉,已有的大key删除,这种最简单
- 对大key进行拆分,大list就拆分成小list
- 对大key进行清理,用UNLINK非阻塞
- 定期清理失效数据
- 压缩value
bigkey存在可能会导致扩容失败,严重会触发master-slave的故障切换
水平扩容都可能遇到哪些问题?
下面有一些参数会有影响,这个是某大厂经过实战总结出来的宝贵经验
- 【cluster-node-timeout】:控制集群的节点切换参数,
master 堵塞超过 cluster-node-timeout/2 这个时间,就会主观判定该节点下线 pfail 状态,如果迁移Bigkey 阻塞时间超过 cluster-node-timeout/2,就可能会导致 master-slave 发生切换。
-
【migrate timeout】:控制迁移 io 的超时时间超过这个时间迁移没有完成,迁移就会中断。
-
【迁移重试周期】:迁移的重试周期是由水平扩容的节点数决定的,比如一个集群扩容 10 个节点,迁移失败后的重试周期就是 10 次。
-
【一个迁移重试周期内的重试次数】:在一个起迁移重试周期内,会有 3 次重试迁移,每一次的 migrate timeout 的时间分别是 10 秒、20 秒、30 秒,每次重试之间无间隔
比如一个集群扩容 10 个节点,迁移时候遇到一个 Bigkey,第一次迁移的 migrate timeout 是 10 秒,10 秒后没有完成迁移,就会设置 migrate timeout 为 20 秒重试,如果再次失败,会设置 migratetimeout 为 30 秒重试,如果还是失败,程序会迁移其他新 9 个的节点,但是每次在迁移其他新的节点之前还会分别设置migrate timeout 为 10 秒、20 秒、30 秒重试迁移那个迁移失败的 Bigkey。这个重试过程,每个重试周期阻塞(10+20+30)秒,会重试 10 个周期,共阻塞 600 秒。其实后面的 9个重试周期都是无用的,每次重试之间没有间隔,会连续阻塞了 Redis 实例
优化如下
-
【cluster-node-timeout】:延长超时时间默认是 60 秒,在迁移之前设置为 15 分钟,防止由于迁移 Bigkey 阻塞导致 master-slave 故障切换。
-
【migrate timeout】:减少阻塞时间为了最大限度减少实例阻塞时间,每次重试的超时时间都是 10 秒,3 次重试之间间隔 30 秒,这样最多只会连续阻塞 Redis 实例 10 秒。
-
【重试次数】:去掉了其他节点迁移的重试迁移失败后,只重试 3 次(重试是为了避免网络抖动等原因造成的迁移失败),每次重试间隔 30 秒,重试 3 次后都失败了,会暂停迁移,日志记录下 Bigkey,去掉了其他节点迁移的重试。
-
【优化日志记录】:日志记录迁移失败日志记录迁移节点、solt、key 信息,可以立即定位到问题节点及 key
相关文章:
Redis热key大key详解
不要阻挡我走向成功,勇者配享所有,感想敢干 hotkey热key 大量请求可能会使redis节点流量不均匀,进而导致宕机,继而打到数据库崩溃;因此需要对热key优化 引发问题: 分片服务瘫痪可能打到数据库࿰…...
软件架构选型之“如何选”
本文提出的多维度评估框架旨在建立客观、全面的架构选型方法论,帮助团队做出更科学的架构决策,通过业务需求、技术约束、组织能力和演进策略四个核心维度建立量化评估模型。该框架旨在解决移动应用架构决策中的主观性和片面性问题,提供系统化…...
C语言写文件模式错误
“w” 和“wb”区别 出错实例 图像.raw文件输出时,采用“w”模式打开写文件,会将值为0A (即\n的ASCII值),前自动添加0D(即\r的ASCII值),如下图所示...
2025最新福昕PDF编辑器,PDF万能处理工具
软件介绍 Foxit PDF Editor Pro 2025 中文特别版(以前称为 Foxit PhantomPDF Business)是一款专为满足各种办公需求而设计的业务就绪的PDF工具包。 软件特点 1. 强大的PDF编辑能力 创建新文档:用户可以从无到有地构建PDF文档,添…...
Android 动态权限申请
ContextCompat.checkSelfPermission 检查应用是否具有某个危险权限。如果应用具有此权限,方法将返回PackageManager.PERMISSION_GRANTED,并且应用可以继续操作。如果应用不具有此权限,方法将返回PackageManager.PERMISSION_DENIED,…...
【模型量化】量化基础
目录 一、认识量化 二、量化基础原理 2.1 对称量化和非对称量化 2.1.1 对称量化 2.1.2 非对称量化 2.1.3 量化后的矩阵乘 2.2 神经网络量化 2.2.1 动态量化 2.2.2 静态量化 2.3 量化感知训练 一、认识量化 量化的主要目的是节约显存、提高计算效率以及加快通信 dee…...
智能 + 安全:婴幼儿托育管理实训基地标准化建设方案
婴幼儿托育服务与管理实训基地智能安全的开发,需以“岗位能力-职业标准-行业需求”为核心逻辑,构建“需求分析-课程设计-教学实施-效果评估”全闭环体系。结合托育行业难点、技术赋能手段及职业能力要求,呈现课程开发全流程,重点突…...
AI重构家居营销新范式:DeepSeek如何破解行业流量与转化困局?
1. 流量下滑、成本攀升、内容同质化:家居行业亟需一场“效率革命” 中国家居行业正经历一场深刻的转型阵痛。线下门店客流量持续萎缩,线上获客成本攀升至临界点,传统营销模式陷入“高投入、低转化”的泥潭;智能家居产品快速迭代&…...
机器学习实操 第一部分 机器学习基础 第7章 集成学习与随机森林
机器学习实操 第一部分 机器学习基础 第7章 集成学习与随机森林 内容概要 第7章深入探讨了集成学习方法,这是一种结合多个预测模型(如分类器或回归器)以提高预测性能的技术。这些方法通过利用群体的智慧,可以比单个模型获得更好…...
如何用GPU Instancing来优化树木草石重复模型
1)如何用GPU Instancing来优化树木草石重复模型 2)Unity ASTC压缩后的纹理在部分安卓机型上不显示 3)现在大部分项目的竖版UI设计分辨率是多少 4)Android上拖拽物体不实时跟随手指的问题 这是第430篇UWA技术知识分享的推送&#x…...
Windows服务器部署全攻略:Flask+Vue+MySQL跨平台项目实战(pymysql版)
当你的后端(Flask+pymysql,Windows开发)与前端(Vue,Mac开发)需要统一部署到Windows服务器时,通过「IIS反向代理+原生组件适配」方案可实现稳定交互。以下是针对Windows环境的专属部署指南,解决路径适配、服务启动等核心问题。 一、Windows服务器环境准备(必做!) 1…...
自动驾驶-一位从业两年的独特视角
时间简介 2023.03 作为一名大三学生,加入到某量产车企,从事地图匹配研发 2023.07 地图匹配项目交付,参与离线云端建图研发 2023.10 拿到24届校招offer 2024.07 正式入职 2025.01 离线云端建图稳定,开始接触在线车端融图研发 自动…...
Vue 3 单文件组件中 VCA 语法糖及核心特性详解
在 Vue.js 的开发世界里,单文件组件(Single File Components,简称 SFC)是构建复杂应用的基石。它将 HTML、CSS 和 JavaScript 代码封装在一个.vue文件中,极大地提高了代码的可维护性和复用性。 本文将深入探讨单文件组…...
iVX:数字化转型全场景技术革新与生态构建实践
在数字经济蓬勃发展的当下,企业数字化转型需求日益迫切。iVX 凭借其独特的技术架构与创新解决方案,深度渗透工业互联网、元宇宙、智慧城市等领域,成为推动全场景数字化转型的重要力量。本文将重新梳理 iVX 的技术应用与生态价值,以…...
车辆检测新突破:VFM-Det 如何用大模型提升识别精度
目录 编辑 一、摘要 二、引言 三、相关工作 四、Coovally AI模型训练与应用平台 五、方法 概述 综述:基于区域建议的检测 基于VehicleMAE的感知器 六、实验分析 数据集与评估指标 实现细节 属性预测模块预训练 与SOTA检测器的对比实验 消融实验 V…...
可视化图解算法:判断是否完全二叉树
1. 题目 描述 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二…...
对于C++中的STL,push_back()和emplace_back()有什么区别?
1.push_back(): 语法为:container.push_back(),接收一个值或一个对象的移动/复制副本; 在将对象添加或移动到容器的末尾前,需要先调用构造函数实例化对象,然后再执行移动或复制操作。 2.emplace_back()&a…...
小程序中的页面跳转
小程序中的页面跳转 在之前网页的学习中,我们往往采用超链接,或者定义方法、函数等方式来实现页面的跳转,但是微信小程序中没有超链接,那我们该如何实现呢?微信小程序的页面跳转包括两个,一个是tabBar页面…...
分享一款免费的AI IDE Trae,全新支持DeepSeek R1/V3、豆包大模型1.5自由切换,更可自定义专属AI模型
分享一款免费的AI IDE Trae,全新支持DeepSeek R1/V3、豆包大模型1.5自由切换,更可自定义专属AI模型,加入我的邀请一起拿好礼,转发给技术搭子还有机会赢取华为MatePad Air、雷蛇机械键盘、热门会员卡等丰厚奖品,即刻体验>>: https://juejin.cn/loy…...
美团优选小程序 mtgsig 分析 mtgsig1.2
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 部分python代码 openId a…...
Java中的多态与继承
Java中的多态与继承 开始学习Java中的多态及如何在多态方法调用中进行方法调用 多态——即对象根据其类型执行特定操作的能力——是Java代码灵活性的核心。四人组(Gang Of Four)创建的许多设计模式都依赖于某种形式的多态,包括命令模式。本文…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(12): ておき ます。 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)~ておき ます。(2&#x…...
MicroPython for esp32s3开发HX711称重模块指南
一、HX711模块基本介绍 一)、核心功能 24位高精度ADC 专为称重传感器设计的模数转换芯片,支持20mV或40mV满幅差分输入内置128/64倍可编程增益放大器(通道A)及固定32倍增益(通道B) 集成化设计 集成…...
智能机器人在物流行业的应用:效率提升与未来展望
随着全球电子商务的蓬勃发展,物流行业正面临着前所未有的挑战和机遇。传统的物流模式已经难以满足日益增长的市场需求,尤其是在效率、成本控制和精准配送方面。智能机器人技术的出现,为物流行业的转型升级提供了强大的动力。本文将探讨智能机…...
MiWi|Microchip开发的专有无线通信协议,适用于低功耗、短距离的无线个人局域网【无线通信小百科】
1、什么是MiWi MiWi(Microchip Wireless)是一种由 Microchip 公司开发的专有无线通信协议。 它基于 IEEE 802.15.4 标准,适用于低功耗、短距离的无线个人局域网(WPAN,Wireless Personal Area Network)。 M…...
分布式事务,事务失效,TC事务协调者
1. 概述 本方案书旨在解决分布式系统中事务一致性问题,重点阐述全局事务标识(XID)的传递与存储机制、事务协调者(TC)的设计与部署,以及分布式事务失效场景的应对策略。基于业界成熟框架(如Seat…...
ESP32开发-作为TCP客户端发送数据到网络调试助手
代码(作为TCP客户端) #include <SPI.h> #include <EthernetENC.h> // 使用EthernetENC库// 网络配置 byte mac[] {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址 IPAddress ip(192, 168, 1, 100); // ESP32的IP IPAddr…...
halcon打开图形窗口
1、dev_open_window 参数如下: 1)Row(输入参数) y方向上,图形窗口距离左上角顶端的像素个数 2)Column(输入参数) x方向上,距离左上角左边的像素个数 3)Width(输入参数) 图形窗口宽度 4)He…...
LVGL -按键介绍 下
4 图标 4.1 内置图标 LVGL 提供了一个很方便的 图标字体 系统,它使用了 lv_label 来显示文本或图标。你可以选择 Font Awesome 或其他图标字体,并将其直接嵌入应用中。LVGL 内建图标字体(如 LV_SYMBOL_*)是可以改变大小的。通过…...
【默子速报】DeepSeek新模型 Prover-V2 报告解读
炸裂,太炸裂了,五一不放假是吧?! 默子加班加点的肝解读! 首先是,Deepseek今天下午显示毫无预兆的在HF上发布了最新的Prover-V2参数 直接让一群人瞬间热血沸腾,想要看看Deepseek又干了什么大事。…...
冰冰一号教程网--介绍采用vuepress搭建个人博客
文章说明 采用vuepress可以快速搭建个人网站,风格统一;采用GPT可以将博文转化为个人博客网站 冰冰一号教程网 访问地址 目前只支持到 2025年05月1号 22点 教程包括主流编程语言:Java、JavaScript、python、C语言、C、C# 教程讲义由GPT生成&am…...
借助电商 API 接口实现电商平台商品数据分析的详细步骤分享
在数字化商业浪潮中,电商平台积累了海量数据。如何从这些数据中挖掘有价值的信息,成为电商企业提升竞争力的关键。电商 API 接口在这一过程中发挥着核心作用,它为获取和分析商品数据提供了高效途径。本文将详细介绍借助电商 API 接口实现电商…...
32单片机——串口
1、通信 通信的方式可以分为多种: (1)按照数据传送方式可分为串行通信和并行通信; ①串行通信 基本特征:数据逐位顺序依次传输 优点:传输线少、布线成本低、灵活度高等优点,一般用于近距离人…...
6.应用层
6. 应用层 1. 概述 应用层是计算机网络体系结构的最顶层,是设计和建立计算机网络的最终目的,也是计算机网络中发展最快的部分 早期基于文本的应用(电子邮件、远程登录、文件传输、新闻组)20世纪90年代将因特网带入千家万户的万维…...
【鸿蒙HarmonyOS】一文详解华为的服务卡片
7.服务卡片 1.什么是卡片 Form Kit(卡片开发服务)提供一种界面展示形式,可以将应用的重要信息或操作前置到服务卡片(以下简称“卡片”),以达到服务直达、减少跳转层级的体验效果。卡片常用于嵌入到其他应…...
深度卷积模型:案例研究
1 为什么要进行案例研究? 过去,计算机视觉中的大量研究都集中在如何将卷积层、池化层以及全连接层这些基本组件组合起来,形成有效的卷积神经网络。 找感觉的最好方法之一就是去看一些示例,就像很多人通过看别人的代码来学习编程一…...
BBR 的 RTT 公平性问题求解
如果 BBR 要跟 reno/cubic 公平,只能顾此失彼,没有任何变通方法,唯一的方法就是在放弃 reno/cubic,但前提你得保证 BBR 流之间是公平的。如果非要照顾 reno/cubic,那就必须要变成 reno/cubic,这就是 BBRv2/…...
SQL命令二:SQL 高级查询与特殊算法
引言 在掌握了 SQL 的基础操作和建表约束后,我们可以进一步探索 SQL 的高级查询功能和一些特殊算法。这些高级技巧能够帮助我们更高效地处理和分析数据,满足复杂的业务需求。 一、查询进阶 (一)简单查询 简单查询通过 select 语…...
Databend 产品月报(2025年4月)
很高兴为您带来 Databend 2025 年 4 月的最新更新、新功能和改进!我们希望这些增强功能对您有所帮助,并期待您的反馈。 BendDeploy:安装 Databend 的新方式 BendDeploy 是由 Databend 开发的一款基于 Kubernetes 的平台,旨在简化…...
Best Video下载器——全能高清无水印视频下载工具
在当今短视频和流媒体盛行的时代,用户经常遇到想要下载视频却受限于平台限制的情况。无论是收藏喜欢的影视片段、保存有价值的教程,还是进行二次创作,一款高效、免费且支持多平台的视频下载工具显得尤为重要。Best Video下载器正是为此而生&a…...
2025东三省D题深圳杯D题数学建模挑战赛数模思路代码文章教学
完整内容请看文章最下面的推广群 一、问题一:混合STR图谱中贡献者人数判定 问题解析 给定混合STR图谱,识别其中的真实贡献者人数是后续基因型分离与个体识别的前提。图谱中每个位点最多应出现2n个峰(n为人数),但由…...
这些是什么充电模块调试手段,对USB、Thermal、DP
在电子产品开发中,充电模块调试及对相关模块的了解是保障产品性能与稳定性的关键环节。下面为你详细介绍: 充电模块调试手段:充电模块负责将外部电源的电能转化为适用于设备的电能,并对电池进行充电管理。调试手段包括使用专业的…...
Gradio全解20——Streaming:流式传输的多媒体应用(2)——构建对话式聊天机器人
Gradio全解20——Streaming:流式传输的多媒体应用(2)——构建对话式聊天机器人 本篇摘要20. Streaming:流式传输的多媒体应用20.2 构建对话式聊天机器人20.2.1 应用概述20.2.2 记录用户音频20.2.3 存储音频并生成响应20.2.4 构建G…...
字节暑期实习-网络运维工程师面经
岗位描述 这个是ByteIntern实习,是暑期实习岗位 岗位 一面 先自我介绍 抓项目技术(会进行确认是什么技术) TCP的三次握手和四次挥手 序列号和确认应答号的位置和大小 序列号是随机的吗? 序列号为什么是随机的? …...
多用户远程 Debugger 服务隔离方案技术实践
多用户远程 Debugger 服务隔离方案技术实践 摘要: 针对多用户同时连接远程 Debugger 服务可能导致的断点冲突、调试流程干扰等问题,本文基于主流调试工具(如 Python debugpy、Java JDWP、Node.js Inspector 等),梳理和…...
华为发布全球首个L3商用智驾ADS4.0
2024年10月2024世界智能网联汽车大会上,余承东讲到:“华为ADS 4.0将于2025年推出高速L3级自动驾驶商用及城区L3级自动驾驶试点,希望加快L3级自动驾驶标准的进程,推动L3级自动驾驶技术的普及。” 世界智能网联汽车大会演讲PPT 所以…...
Silo 科学数据工具库安装与使用指南
Silo 科学数据工具库安装与使用指南 Silo 是一个用于科学数据可视化和分析的工具库,由 Lawrence Livermore National Laboratory (LLNL) 开发。以下是 Silo 的安装和使用方法: 安装 Silo Linux 系统安装 从源码安装: wget https://wci.lln…...
vs2019编译occ7.9.0时,出现fatal error C1060: compiler is out of heap space
问题描述 visual studio 2019编译opencascade 7.9.0时,出现编译错误 fatal error C1060: compiler is out of heap space 解决方案 修改vs2019并行编译的线程个数,默认是12个,我改成了4个,问题解决 Tools > Project and Sol…...
Poco C++全面开发指南:网络应用开发
UDP接收器 项目结构 poco_demo/ ├── CMakeLists.txt ├── src/ │ ├── main.cpp │ └── Receiver.cpp └── include/└── Receiver.h创建 Receiver.h #pragma once#include <Poco/Net/DatagramSocket.h> #include <Poco/Net/SocketAddress.h>…...
Spring AOP概念及其实现
一、什么是AOP 全称Aspect Oriented Programming,即面向切面编程,AOP是Spring框架的第二大核心,第一大为IOC。什么是面向切面编程?切面就是指某一类特定的问题,所以AOP也可以称为面向特定方法编程。例如对异常的统一处…...