redis 大 key 优化。哈罗面试:redis 有个大 key需要在线优化, 不能影响现有业务,请求不能大量到库,怎么优化?

本文 的 原文 地址

原始的内容,请参考 本文 的 原文 地址

本文 的 原文 地址

尼恩说在前面:

在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、shein 希音、shopee、百度、网易的面试资格,遇到很多很重要的面试题:

MySQL的慢查询、如何监控、如何排查?

你知道如何排查慢sql嘛?

你知道如何对mysql进行优化嘛?

mysql慢查询如何定位分析?哪些情况会导致慢查询?

没开sql慢查询日志,怎么发现慢 sql?

前几天 小伙伴面试 哈罗,遇到了这个问题。但是由于 没有回答好,导致面试挂了。

小伙伴面试完了之后,来求助尼恩。

那么,遇到 这个问题,该如何才能回答得很漂亮,才能 让面试官刮目相看、口水直流。

所以,尼恩给大家做一下系统化、体系化的梳理,使得大家内力猛增,可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”,然后实现”offer直提”。

当然,这道面试题,以及参考答案,也会收入咱们的 《尼恩Java面试宝典》V145版本PDF集群,供后面的小伙伴参考,提升大家的 3高 架构、设计、开发水平。

最新《尼恩 架构笔记》《尼恩高并发三部曲》《尼恩Java面试宝典》的PDF,请关注本公众号【技术自由圈】获取,后台回复:领电子书

一、什么是Big Key?

通俗易懂的讲,Big Key就是某个key对应的value很大,占用的redis空间很大,本质上是大value问题。

key往往是程序可以自行设置的,value往往不受程序控制,因此可能导致value很大。

redis中这些Big Key对应的value值很大,在序列化/反序列化过程中花费的时间很大,因此当我们操作Big Key时,通常比较耗时,这就可能导致redis发生阻塞,从而降低redis性能。

BigKey指以Key的大小和Key中成员的数量来综合判定。

下面,尼恩 用几个实际的例子对大Key的特征进行描述:

  • Key本身的数据量过大:一个String类型的Key,它的值为5MB
  • Key中的成员数过多:一个ZSET类型的Key,它的成员数量为10000个
  • Key中成员的数据量过大:一个Hash类型的Key,它的成员数量虽然只有1000个但这些成员的Value值总大小为100MB

尼恩提示:在实际业务中,大Key的判定仍然需要根据Redis的实际使用场景、业务场景来进行综合判断。通常都会以数据大小与成员数量来判定。

二、Big Key产生的场景?

1、redis数据结构使用不恰当

将Redis用在并不适合其能力的场景,造成Key的value过大,如使用String类型的Key存放大体积二进制文件型数据。

2、未及时清理垃圾数据

没有对无效数据进行定期清理,造成如HASH类型Key中的成员持续不断的增加。即一直往value塞数据,却没有删除机制,value只会越来越大。

3、对业务预估不准确

业务上线前规划设计考虑不足没有对Key中的成员进行合理的拆分,造成个别Key中的成员数量过多。

4、明星、网红的粉丝列表、某条热点新闻的评论列表

假设我们使用List数据结构保存某个明星/网红的粉丝,或者保存热点新闻的评论列表,因为粉丝数量巨大,热点新闻因为点击率、评论数会很多,这样List集合中存放的元素就会很多,可能导致value过大,进而产生Big Key问题。

三、Big Key的危害?

危害1:阻塞请求

Big Key对应的value较大,我们对其进行读写的时候,需要耗费较长的时间,这样就可能阻塞后续的请求处理。

Redis的核心线程是单线程,单线程中请求任务的处理是串行的,前面的任务完不成,后面的任务就处理不了。

危害2:内存增大

读取Big Key耗费的内存比正常Key会有所增大,如果不断变大,可能会引发OOM(内存溢出),

内存增大 达到redis的最大内存maxmemory设置值, 会 引发写阻塞, 或导致 重要Key被逐出。

危害3:阻塞网络

单value较大时, 读取 会占用服务器网卡较多带宽,

自身变慢的同时, 可能会影响该服务器上的其他Redis实例或者应用。

危害4:影响主从同步、主从切换

删除一个大Key, 造成主库较长时间的阻塞并引发同步中断或主从切换。

四、生产场景的bigkey 扫描

结合scan + 定时任务的方式, 在 吞吐量的低峰期,进行扫描

发现了bigkey, 可以及时的进行 运维 告警, 发送 邮件通知或者 钉钉企业信息

参见下面的文章:

滴滴一面:BigKey问题很致命,如何排查和处理?

五、在线优化

...................由于平台篇幅限制, 剩下的内容(5000字+),请参参见原文地址

原始的内容,请参考 本文 的 原文 地址

本文 的 原文 地址

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

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

相关文章

ACL高可用架构。希音面试:第三方挂了,我们总在背锅。来一 靠谱的 高可用方案,让 外部依赖 稳如泰山

本文 的 原文 地址 原始的内容,请参考 本文 的 原文 地址 本文 的 原文 地址 尼恩说在前面: 最近大厂机会多了, 在45岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极…

软工9.24

今天学习了枚举类型,enum这个是类似于class的关键字,用枚举定义一个类型,在内部写的东西都是类似于一种对象的,可以用枚举类型做一些特殊的作用。

做网站怎么做连接点下一个页面青岛今天发生的重大新闻

mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产…

网站分站是怎么做的乐清发布网

QT画图功能 每个QWidget都自带的功能,继承了QPainteDevice都可以使用QPainter来进行绘图。 画图需要调用paintEvent绘制事件,paintEvent事件时QWidget类自带的事件。 重写paintEvent事件。(重写事件:如果父类有某个方法&#xff…

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)

无法安装 WebView2! 没有它,此应用就无法运行(解决方式附安装包)​ 1. 先确认系统与软件环境 ​​系统版本​​:确保你的 Windows 系统是较新的版本(一般 Win10 1809 及以上、Win11 都支持 WebView2;如果是比较旧…

2025CSP-S模拟赛51

2025CSP-S模拟赛51T1 T2 T3 T430 TLE 18 WA 54 TLE -总分:102;排名:19/24。 打得很唐氏。T1 挂了 70 分,T2 本可以做出来的,没调出来。 T1 算术 考虑对原式进行变形(省略过程): \[\left\{\begin{align*} &…

2025年9月24日 - 20243867孙堃2405

今天上午的两门课一是离散数学,讲的有关集合论的知识,主要是序偶和笛卡尔积,马原让我更加了解了社会主义的历史

【星海随笔】RabbitMQ开发篇 - 教程

【星海随笔】RabbitMQ开发篇 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

手机网站建设要注意哪些问题搜索关键词

在Ionic框架中,头部(Header)和底部(Footer)是重要的UI组件,它们分别固定在屏幕的顶部和底部。 头部(Header) 头部组件通常用于显示应用程序的标题、副标题和导航按钮。它是应用程序…

有域名就可以做网站么动漫设计专业属于什么大类

记得几年前想要在Android手机上截图,得安装类似截图软件与Root 才行,层层的关卡还真不是一般使用者能处理的,如今Android手机大部分都已内置截图功能,对于我撰写App文章来说帮助很大,但有时想要表现哪台手机外框画面时…

买app的网站建设做网站卖产品

当涉及Java编程和执行时,以下术语具有不同的含义: 1.JRE (Java Runtime Environment) JRE是Java运行时环境的缩写。它是一个包含用于在计算机上运行Java应用程序所需的组件集合。JRE包括了以下几个主要部分: Java虚拟机(JVM):用…

找做金融的网站电商网站设计流程

1. 文件上传到本地 需求分析 在用户更换头像或发布文章时,需要携带一个图片的 url 地址,该 url 地址是当用户访问文件上传接口,将图片上传成功后,服务器返回的地址。所以,后台需要提供一个文件上传接口,用…

侯马建设规划局网站学校网站建设团队

problem statement 这道题给我们一个不超过15位的整数 让我们在其中加等号或者加号 如果加完符号后符合计算结果 那么计数 最后输出所有的情况 problem analysis 这道题其实就是想办法遍历所有情况 把合法的记录下来 最终输出就得到解 如何枚举呢 我们可以枚举等号的位置…

分库分表后如何高效处理分页

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Playwright MCP 服务器对比高层级的 MCP 服务器解决方案 - 详解

Playwright MCP 服务器对比高层级的 MCP 服务器解决方案 - 详解2025-09-24 20:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impo…

详细介绍:【Selenium】UI自动化测试框架设计:从项目结构到Base-Page层的最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P13754 【MX-X17-T3】Distraction

原题链接:P13754 【MX-X17-T3】Distraction - 洛谷 非常好的题,非常好的思想。简单思想的结合体就是不易察觉的难题。这题实际上就两个难点:1. 处理每个点的权值 \(v_i\)。2. 推导交换权值并找出最长字段和 首先对于…

台州自助建站系统热门国际新闻

从Manus到OpenManus:AI智能体技术如何重塑未来生活场景? 一、现状:AI智能体技术面临的三大核心矛盾 (通过分析用户高频痛点与市场反馈提炼) 能力与门槛的失衡 Manus展示的复杂任务处理能力(如股票分析、代…

2025.9.24

今天上早八离散数学,认真听课发现真听懂了,然后是马克思主义基本原理,老师话很亲切,中午吃饭没休息,又出发修改表格格式了,弄了3个小时,外卖被偷了,我又点了一份,然后洗澡,没带洗发水用香皂洗头,效果不好,…

初学汇编

寄存器 存储数据速度:cpu > 内存 > 硬盘通用寄存器 寄存器是在cpu中的8位 16位 32位EAX AX ALEBX BX BLECX CX CLEDX DX DLESP SP AHEBP BP CHESI SI DHEDI DI BH内存地址的五种形式 1.立即数:如0x13FFC4 2.[r…