Redis--20--大Key问题解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 大Key问题
- 1.什么是 Redis 大 Key?
- 在 Redis 中,大 Key 是指==单个键值对==的数据量非常大,可能包含大量数据。
- 2. Redis大Key的危害
- 3.大key、热key的产生原因:
- 4.为什么需要关注大Key问题?
- Redis大Key引发的线上事故场景
- 1. 常见事故场景描述
- 1.1 **操作大Key导致Redis阻塞**
- 1.2 大Key迁移时的性能问题
- 1.3 慢查询和超时的影响
- 2. 事故表现及影响
- 2.1 业务卡顿
- 2.2 系统不可用
- 2.3 难以快速恢复
大Key问题
大Key并不直接导致系统问题,但其潜在影响和风险非常显著,尤其在生产环境中。
1.什么是 Redis 大 Key?
在 Redis 中,大 Key 是指单个键值对的数据量非常大,可能包含大量数据。
Redis大Key是指单个Key对应的数据量过大,占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种:
- String类型:单个字符串的长度过大。
- List类型:包含大量元素的列表。
- Hash类型:存储大量字段的哈希表。
- Set或ZSet类型:存储大量成员的集合或有序集合。
数值参考
2. Redis大Key的危害
-
性能瓶颈:对大Key的读写操作可能占用过多的CPU资源,导致其他操作延迟。
-
阻塞问题:一次性删除大Key或迁移大Key时,Redis可能出现阻塞,从而影响整个服务。
-
内存压力:大Key会占用大量内存,增加内存碎片化的风险,并可能触发Redis的内存淘汰机制。
-
恢复缓慢:当需要从快照(RDB)或日志(AOF)中加载数据时,大Key会显著延长恢复时间。
具体
- 对Redis的请求变慢。
- Redis内存不断变大引发OOM,或达到maxmemory值引发写阻塞或重要Key被逐出。
- Redis Cluster中的某个node内存远超其余node。
- 由于对大key的请求很慢,容易造成请求的阻塞,在分布式架构下容易造成服务雪崩。
- 删除一个大Key很耗时,容易造成主结点阻塞,从而主从切换。
3.大key、热key的产生原因:
- 存放不合理,存储了不适合存放在内存中的数据,如用key存放音频视频这一类大体积二进制文件(大key)。
- 设计不合理,造成个别key中成员过多。(大key)。
- 未定期清理数据,没有设置过期时间,造成了如hash类型中key中的成员不断增加。
- 流量陡增,如出现某款爆款商品等(热key)。
- bug,代码的业务逻辑上对key的成员只增不减也未设置过期时间。
4.为什么需要关注大Key问题?
在生产环境中,Redis被广泛用作缓存和数据库,如果忽略大Key问题,可能导致以下后果:
- 线上事故频发:由于Redis本身是单线程模型,大Key的操作会阻塞主线程,影响所有客户端请求。
- 业务中断:高延迟甚至不可用的情况会对业务造成直接损失。
- 运维复杂度增加:需要额外的监控和排查,增加了运维负担。
Redis大Key引发的线上事故场景
1. 常见事故场景描述
1.1 操作大Key导致Redis阻塞
- Redis是单线程执行命令的,在操作大Key(如读取、更新或删除)时,单次命令可能需要较长时间完成,阻塞其他客户端请求。
- 例如:使用DEL删除一个包含数百万元素的List或Set时,操作可能耗时几秒甚至更久,导致其他请求无法响应。
1.2 大Key迁移时的性能问题
- 在Redis进行主从同步或数据迁移时,大Key的传输会占用大量带宽和时间。
如果迁移操作与正常业务请求同时进行,可能导致Redis服务性能大幅下降,甚至引发业务中断。
1.3 慢查询和超时的影响
- 对大Key执行复杂操作(如LRANGE、HGETALL、ZRANGEBYSCORE)时,操作时间会随着数据量的增长线性甚至指数级增加,可能触发慢查询或请求超时。
- 例如:一次性从一个包含百万条数据的List中获取范围数据,容易导致应用程序响应缓慢。
2. 事故表现及影响
2.1 业务卡顿
- 用户请求无法及时得到响应,表现为接口延迟增加甚至超时。
- 对于高并发场景,这种情况会进一步放大,导致更多请求堆积。
2.2 系统不可用
- 阻塞问题可能让整个Redis实例无法响应请求,导致相关业务完全瘫痪。
- 如果Redis作为缓存使用,缓存不可用会给后端数据库带来极大压力,可能进一步引发数据库瓶颈。
2.3 难以快速恢复
- 在线上恢复过程中,删除或迁移大Key会进一步延长恢复时间。
- 大Key也会导致Redis内存碎片增加,可能需要触发MEMORY FRAGMENTATION的手动优化,进一步增加停机时间。
相关文章:
Redis--20--大Key问题解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 大Key问题1.什么是 Redis 大 Key?在 Redis 中,大 Key 是指单个键值对的数据量非常大,可能包含大量数据。 2. Redis大Key的危害3.…...
如何使用Yarn Workspaces实现Monorepo模式在一个仓库中管理多个项目
Yarn Workspaces是Yarn提供的一种依赖管理机制,它支持在单个代码仓库中管理多个包的依赖。这种机制非常适合需要多个相互依赖的包的项目,能够减少重复依赖,加快依赖安装速度,并简化依赖管理。下面将详细介绍如何使用Yarn Workspac…...
测试ip端口-telnet开启与使用
前言 开发过程中我们总会要去测试ip通不通,或者ip下某个端口是否可以联通,为此我们可以使用telnet 命令来实现。 一、telnet 开启 可能有些人使用telnet报错,不是内部命令,可以如下开启: 1、打开控制面板ÿ…...
c#版本、.net版本、visual studio版本之间的对应关系
最近这几年一直没用过c#开发,都是从事Qt c开发工作,回想一下之前c#还要追溯到2019年,算算时间大概都已过去4,5年了,时间飞快。 2019真是个神奇的数字,vs2019是我用的时间最长的一个IDE,新冠起始…...
大语言模型训练
步骤 Self-Supervised Pre-Training,简称SPTSupervised Fine-Tuning,简称SFTLearning from Human Feedback,简称LfHF Self-Supervised Pre-Training 自监督预训练(Self-Supervised Pre-Training,简称SPT)…...
ElasticSearch | Elasticsearch与Kibana页面查询语句实践
关注:CodingTechWork 引言 在当今大数据应用中,Elasticsearch(简称 ES)以其高效的全文检索、分布式处理能力和灵活的查询语法,广泛应用于各类日志分析、用户行为分析以及实时数据查询等场景。通过 ES,用户…...
idea快捷键
IDEA常见快捷键 Ctrl A 全写 Ctrl C 粘贴 Ctrl V 复制 Ctrl F 搜索 Ctrl R 替换 Ctrl Z 撤销 Ctrl D 复制行 Ctrl X 删除行,并且被删除的行复制到剪贴板中 Ctrl Y 删除一行 Ctrl Shift Z 反撤销 IDEA重要快捷键 Ctrl / 单行注释&…...
2024年全国信息素养大赛-图形化编程-省赛-绘制正方和三角形
绘制正方和三角形 【编程实现】 使用自制积木,绘制正方形和三角形。 【具体要求】 *程序尽量简洁。 1.画出喜庆的红色图形。 2.先画正方形,再画三角形。 3.正方形和三角形不重叠。 4.正方形和三角形不超出背最中红框的范围。 题目程序演示可点击…...
二进制编码 和 Base64编码
我需要将音频数据存为字符串,不知道存为 二进制编码 和 Base64编码 以下内容来自 DeepSeek : 1. 二进制编码 优点: 高效:二进制编码直接存储原始数据,占用空间小,处理速度快。适合传输:在需要高效传输的…...
微信小程序防止重复点击事件
直接写在app.wpy里面,全局可以调用 // 防止重复点击事件preventActive(fn) {const self this;if (this.globalData.PageActive) {this.globalData.PageActive false;if (fn) fn();setTimeout(() > {self.globalData.PageActive true;}, 3000); //设置该时间内…...
Kafka集群安装
Apache kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,是消息中间件的一种,用于构建实时数据管道和流应用程序。 Kafka官网:http://kafka.apache.org/ 安装环境: Kafka集群环境搭建,依赖于zookeep…...
EXCEL: (二) 常用图表
10. 图表 134-添加.删除图表元素 图表很少是一个单独的整体,而是由十几种元素/对象拼凑出来的。 学习图表就是学习当中各类元素的插删改。 ①图表中主要元素的定义 图表上的一个颜色就是一个系列,每个系列都对应原数据中的一列/一行值数据。 每个系…...
系统日志优化---自定义springboot-starter日志组件供各个服务使用
在优化项目时发现各个微服务都有各自的接口调用日志逻辑,比如每个服务都定义一个aop类拦截,十分冗余,其实是可以做成starter被各个服务引用使用,前提要先了解一下springboot自动装配原理 创建springboot工程,如果是jdk…...
《GB50348-2018 安全防范工程技术标准》:安防工程的权威指南
《GB50348-2018 安全防范工程技术标准》:安防工程的权威指南 【下载地址】GB50348-2018安全防范工程技术标准分享 GB50348-2018 安全防范工程技术标准本仓库提供的是《GB50348-2018 安全防范工程技术标准》的高清电子版资源 项目地址: https://gitcode.com/Open-s…...
RabbitMQ高级篇
目录 确保发送者的可靠 为什么需要确保发送者的可靠性 RabbitMQ 的发送者重连机制配置 springAMQP实现发送者确认 MQ的可靠性 为什么需要实现MQ的可靠性? 数据持久化 Lazy Queue 核心思想 总结RabbitMQ 如何保证消息的可靠性 持久化 Lazy Queue 消息…...
任务调度系统Quartz.net详解2-Scheduler、Calendar及Listener
任务调度系统Quartz.net详解2-Scheduler、Calendar及Listener Scheduler 调度器scheduler是Quartz中的独立工作容器,所有的Trigger和Job都需要注册到scheduler中才能工作。我们可以通过SchedulerFactory来获取scheduler实例。如下: //1.获取默认的标准…...
服务器出现蓝屏现象的原因有什么?
当服务器定期出现蓝屏的现象,则会影响到企业业务的连续性,同时还可能会导致重要数据信息丢失和系统稳定性下降,是一种较为复杂的技术问题,本文就来探讨一下导致服务器出现蓝屏的原因都有什么。 服务器出现蓝屏有可能是硬件出现了故…...
IP 地址与蜜罐技术
基于IP的地址的蜜罐技术是一种主动防御策略,它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意,将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描,寻找可入侵的目标时&…...
探索数据存储的奥秘:深入理解B树与B+树
key value 类型的数据红黑树(最优二叉树,内存最优),时间复杂度:O(logn),调整方便;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下:红黑树的层数很高&am…...
mac学习芋道源码记录
nodejs安装 v16.20.0 cd yudao-ui-admin-vue2 node install -g yarn yarn install npm run local改配置不然node install -g yarn报错 前往-前往文件夹-/Library 创建 /nodejs/node_global /nodejs/node_cache npm config set prefix /Library/nodejs/node_global npm c…...
CCF 赛事介绍
CCF 赛事介绍 中国计算机学会(CCF)举办了诸多具有影响力的赛事,面向不同年龄段与群体,各有其特色要求。 一、青少年编程启蒙类 CCF 编程能力等级认证(GESP): 适合年龄:涵盖中小学…...
MySQL表的约束
目录 一、空属性 二、默认值 三、列描述 四、zerofill 五、主键 六、自增长 七、唯一键 八、外键 一、空属性 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能…...
相互带节奏
有些单词在发音方面是相互带节奏的 【1】 broccoli n.西兰花Berklee n.伯克利 Berklee College of Music 伯克利音乐学院 【2】 college n.大学,学院colleague n.同事,僚 league n.联合会,联赛;联盟,同盟 【3】…...
秒懂虚拟化(二):服务器虚拟化、操作系统虚拟化、服务虚拟化全解析,通俗解读版
秒懂虚拟化(一):从概念到网络、存储虚拟化全解析,通俗解读版-CSDN博客这篇文章学习了虚拟化的概念、网络虚拟化和存储虚拟化,本节将继续学习服务器虚拟化、操作系统虚拟化、服务虚拟化。 1、服务器虚拟化 服务器虚拟…...
ubuntu 配置OpenOCD与RT-RT-thread环境的记录
1.git clone git://git.code.sf.net/p/openocd/code openocd 配置gcc编译环境 2. sudo gedit /etc/apt/source.list #cdrom sudo apt-get install git sudo apt-get install libtool-bin sudo apt-get install pkg-config sudo apt-install libusb-1.0-0-dev sudo apt-get…...
优化 MySQL 的慢查询
文章目录 1. 分析慢查询日志2. 优化查询语句3. 优化表结构4. 调整服务器参数5. 数据库引擎选择6. 缓存策略7. 定期维护数据库 1. 分析慢查询日志 首先,要开启 MySQL 的慢查询日志,以便能够记录执行时间超过阈值的查询语句。可以通过修改 MySQL 配置文件…...
【机器学习】聚类评价指标之福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)
福尔克斯–马洛斯指数(Fowlkes–Mallows Index, FMI)是一种用于评估聚类结果与实际标签之间一致性的指标。FMI 值可以用于衡量聚类的准确性,特别是在有真值标签的监督评估场景中。 计算公式 FMI 的计算基于以下公式: 其中&#…...
vue3模板引用ref
1.访问模板引用 要在组合式 API 中获取引用,我们可以使用辅助函数 useTemplateRef() 只可以在组件挂载后才能访问模板引用 <script setup> import { useTemplateRef, onMounted } from vue// 第一个参数必须与模板中的 ref 值匹配 const input useTempla…...
20250111英语学习
place check in window seat; aisle seat boarding pass 登机牌 boarding pass depart from terminal C Gate 4 (Gate door entre to the plane) place : Check in window seat boarding pass 登机牌 depart from terminal C Gate 4 (Gate door entre to the plane) you…...
【Rust自学】11.6. 控制测试运行:并行和串行(连续执行)测试
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.6.1. 控制测试的运行方式 cargo test和cargo run一样,cargo test也会编译代码并生成一个二进制文件用于测试,…...
CSS3 弹性盒子
CSS3 弹性盒子 介绍 CSS3 弹性盒子(Flexbox)是一种用于布局设计的强大工具。它提供了一种更加高效的方式来对容器内的子元素进行排列、对齐和分配空间。Flexbox 的设计目标是提供一种统一的布局模型,能够适应不同屏幕尺寸和设备类型&#x…...
LabVIEW 系统诊断
LabVIEW 系统诊断是指通过各种工具和方法检测、评估、分析和解决 LabVIEW 程序和硬件系统中可能存在的故障和性能问题。系统诊断不仅涵盖软件层面的调试与优化,还包括硬件交互、数据传输、实时性能等方面的检查和分析。一个成功的系统诊断能够显著提升LabVIEW应用程…...
UE5中制作地形材质
在创作大场景内容时,地形的设计和优化是至关重要的一步。利用UE中的地形系统,开发者能够高效地创建复杂的地形形态,同时保持游戏的性能和视觉效果。 1.在创建地形之前,先新建一个地形使用的混合材质球,添加节点Landsc…...
【题解】AT_abc388_e AtCoder Beginner Contest ABC388 E Simultaneous Kagamimochi
题目大意 题目传送门——原题面链接 建议阅读本次比赛 C 题题面。 有 N N N 块米糕,按大小升序排列,第 i i i 块米糕的大小为 A i A_i Ai。 现在定义“堆叠式米糕”如下: 首先,选出两个米糕 A A A 和 B B B࿰…...
2025年01月11日Github流行趋势
项目名称:xiaozhi-esp32 项目地址url:https://github.com/78/xiaozhi-esp32项目语言:C历史star数:2433今日star数:321项目维护者:78, MakerM0, whble, nooodles2023, Kevincoooool项目简介:构建…...
Uniapp中实现加载更多、下拉刷新、返回顶部功能
一、加载更多: 在到达底部时,将新请求过来的数据追加到原来的数组即可: import {onReachBottom } from "dcloudio/uni-app";const pets ref([]); // 显示数据function network() {uni.request({url: "https://api.thecatap…...
哈希表及模拟实现
目录 一、哈希表的概念 二、模拟实现哈希表 1.开放地址法 (1)哈希表的数据加上状态标志 (2)哈希表扩容:载荷因子 (3)哈希函数:不同数据类型转换为整型 (4)完整代码 2.链地址法(哈希桶) (1)哈希表扩容:载荷因子…...
鸿蒙面试 2025-01-09
鸿蒙分布式理念?(个人认为理解就好) 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中,“流转”是指涉多端的分布式操作,它打破了设备之间的界限,实现了多设备…...
Apache XMLBeans 一个强大的 XML 数据处理框架
Apache XMLBeans 是一个用于处理 XML 数据的 Java 框架,它提供了一种方式将 XML Schema (XSD) 映射到 Java 类,从而使得开发者可以通过强类型化的 Java 对象来访问和操作 XML 文档。下面将以一个简单的案例说明如何使用 Apache XMLBeans 来解析、生成和验…...
基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪
案例来源:https://spectacularai.github.io/docs/sdk/wrappers/oak.html 适配相机:带IMU的 OAK-D 系列相机 基于视觉惯性 SLAM(VSLAM)、相机和 IMU 数据的融合执行 6 自由度位姿跟踪 ~~~~~~~(分界线)~~~~~…...
MySQL--》理解锁机制中的并发控制与优化策略
锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中除了传统的计算机资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突…...
2、第一个GO 程序
引言 接下里我们就用Go Land 工具,开发第一个GO程序。大家也可以用其他的开发工具,例如 Vs Code 1、新建项目 第一个是选择你的程序保存位置 (不要有中文)。 第二个是你的Go的编译器的安装地址。 选择完毕后,就点击 …...
解决nginx多层代理后应用部署后访问发现css、js、图片等样式加载失败
一般是采用前后端分离部署方式,被上一层ng代理后,通过域名访问报错,例如:sqx.com.cn/应用代理路径。 修改nginx配置,配置前端页面的路径: location / {proxy_pass http://前端页面所在服务器的IP:PORT;pro…...
【Notepad++】Notepad++如何删除包含某个字符串所在的行
Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…...
Python的秘密基地--[章节11] Python 性能优化与多线程编程
第11章:Python 性能优化与多线程编程 在开发复杂系统时,性能优化和并发编程是不可忽视的重点。Python 提供了多种工具和技术用于优化代码性能,并通过多线程、多进程等方式实现并发处理。本章将探讨如何在 Python 中提升性能,并实…...
【Unity3D】利用IJob、Burst优化处理切割物体
参考文章: 【Unity】切割网格 【Unity3D】ECS入门学习(一)导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…...
初学stm32 --- ADC模拟/数字转换器工作原理
目录 常见的ADC类型 并联比较型工作示意图 逐次逼近型工作示意图 ADC的特性参数 STM32各系列ADC的主要特性 ADC框图简介 参考电压/模拟部分电压 输入通道( F1为例) 转换序列(F1为例) 规则组和注入组执行优先级对比 规则…...
【MySQL】SQL菜鸟教程(一)
1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…...
BM25(Best Match 25):信息检索的排序函数;稠密矩阵检索技术:RoBERTa
BM25(Best Match 25):信息检索的排序函数 常用于搜索引擎等场景,以下是关于它检索的内容及举例说明: 一、BM25检索的内容 文本数据: 文档集合:可以是大量的网页、学术论文、新闻文章、书籍内容等各种形式的文本集合。例如,一个学术搜索引擎可能会使用BM25对包含数百万…...
高级软件工程-复习
高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…...