首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Redis中的HotKey如何解决

Redis中的HotKey如何解决

作者头像
阿珍
发布于 2023-02-07 10:01:58
发布于 2023-02-07 10:01:58
7470
举报

对于三高系统,Redis是必须/必需的,当并发高到一定的程度就可能会出现HotKey的问题,今天我们来看下Redis中的HotKey如何解决。

什么是HotKey

在较短的时间内,海量请求访问一个Key,这样的Key就被称为HotKey。

HotKey的危害

  • 海量请求在较短的时间内,访问一个Key,势必会导致被访问的Redis服务器压力剧增,可能会将Redis服务器击垮,从而影响线上业务;
  • HotKey过期的一瞬间,海量请求在较短的时间内,访问这个Key,因为Key过期了,这些请求会走到数据库,可能会将数据库击垮,从而影响线上业务。(这是缓存击穿问题)

HotKey如何解决

HotKey如何解决是一个比较宽泛的问题,涉及到多个方面,我们一个个来看。

Redis部署

通常来说,Redis有两种集群形式:数据分片集群、主从+哨兵集群,其实这两种集群形式或多或少的都一定程度上缓解了HotKey的问题。

主从+哨兵集群

如果我们采用单主:

  • 所有的读请求都会打在仅有的一个Redis服务器,都不用管Key是什么,只要并发一高,就会导致Redis服务器压力剧增;
  • 一旦仅有的一个Redis服务器挂了,就没有第二个Redis服务器顶上去了,无法继续提供服务。

如果我们采用主从+哨兵集群:

  • 读请求会被分散到Master节点或者多台Slave节点,将请求进行了初步的分散;
  • Master节点挂了,Slave节点会升级为新的Master节点,继续提供服务。

数据分片集群

Key被分散在了不同的Redis节点,将请求进行了进一步的分散。

如果采用数据分片集群,同时也会部署主从+哨兵,这样又有了主从+哨兵集群的特性:

  • 读请求会被分散到Master节点或者多台Slave节点,将请求进行了初步的分散;
  • Master节点挂了,Slave节点会升级为新的Master节点,继续提供服务。

画外音:我以前一直以为大部分公司都已经采用了数据分片集群,其实不然,某个我认为不差钱的公司,在2021年采用的还是主从+哨兵集群,出了问题,才转变成数据分片集群,我到我们公司一瞧,才发现我们公司也是主从+哨兵集群。

隔离

不同的业务分配不同的Redis集群,不要将所有的业务都“混杂”在一个Redis集群。

只要可以做到集群+隔离,在一定程度上就已经避免了HotKey,但是对于超高并发的系统来说,可能还有点不够,所以才会有下面的更进一步的措施。

如何应对HotKey

这个问题,可以拆分成三个子问题:如何发现HotKey、如何通知HotKey的产生、如何对HotKey进行处理。

如何发现HotKey

如何发现HotKey的前提是知道每个Key的使用情况,并进行统计,所以这又拆成了两个更小的子问题:如何知道每个Key的使用情况,如何进行统计。

如何知道每个Key的使用情况

谁最清楚知道每个Key的使用情况,当然是客户端、代理层,所以我们可以在客户端或者代理层进行埋点。

客户端埋点

在客户端请求Redis的代码中进行埋点。

优点:

  • 实现较为简单
  • 轻量级
  • 几乎没有性能损耗

缺点:

  • 进行统一管理较为麻烦:如果想开启或者关闭埋点、上报,会比较麻烦
  • 升级、迭代较为麻烦:如果埋点、上报方式需要优化,就需要升级Jar包,再找一个黄道吉日进行发布
  • 客户端会有一定的压力:不管是实时上报使用情况,还是准实时上报使用情况,都会对客户端造成一定的压力
代理层埋点

客户端不直接连接Redis集群,而是连接Redis代理,在代理层进行埋点。

优点:

  • 客户端没有压力
  • 对客户端完全透明
  • 升级、迭代比较简单
  • 进行统一管理比较简单

缺点:

  • 实现复杂
  • 会有一定的性能损耗:代理层需要转发请求到真正的Redis集群
  • 单点故障问题:需要做到高可用,更复杂
  • 单点热点问题:代理层本身就是一个热点,需要分散热点,更复杂
如何上报每个Key的使用情况

我们在客户端或者代理层进行了埋点,自然是由它们上报每个Key的使用情况,如何上报又是一个小话题。

实时/准实时
  • 实时上报:每次请求,都进行上报
  • 准实时上报:积累一定量或者一定时间的请求,再进行上报
是否预统计

如果采用准实时上报,在客户端或者代理层是否对使用情况进行预统计:

  • 进行预统计:减少上报的数据量,减轻统计的压力,自身会有压力
  • 不进行预统计:上报的数据量比较多,自身几乎没有压力
如何统计

不管如何进行上报,使用情况最终都会通过Kafka,发送到统计端,这个时候统计端就来活了。 一般来说,这个时候会借助于大数据,较为简单的方式:Flink开一个时间窗口,消费Kafka的数据,对时间窗口内的数据进行统计,如果在一个时间窗口内,某个Key的使用达了一定的阈值,就代表这是一个HotKey。

如何通知HotKey的产生

经过上面的步骤,我们已经知道了某个HotKey产生了,这个时候就需要通知到客户端或者代理层,那如何通知HotKey的产生呢?

  • MQ:用MQ通知客户端或者代理层HotKey是什么
  • RPC/Http:通过RPC/Http通知客户端或者代理层HotKey是什么
  • 配置中心/注册中心指令:既然遇到了HotKey的问题,并且想解决,那基本上是技术实力非常强大的公司,应该有非常完善的服务治理体系,此时,可以通过配置中心/注册中心下发指令到客户端或者代理层,告知HotKey是什么

如何处理HotKey

客户端或者代理层已经知晓了HotKey产生了,就自动开启一定的策略,来避免HotKey带来的热点问题:

  • 使用本地缓存,不至于让所有请求都打到Redis集群
  • 将HotKey的数据复制多份,分散到不同的Redis节点上

在实际开发中,可能在很大程度上,都不会有埋点、上报、统计,通知、策略自动开启,这一套比较完善的Redis HotKey解决方案,我们能做到的就是预估某个Key可能会成为热点,就采用本地缓存+复制多份HotKey数据的方式来避免HotKey带来的热点问题。我们还经常会因为偷懒,所以设计了一个大而全的Key,所有的业务都从这个Key中读取数据,但是有些业务只需要其中的一小部分数据,有些业务只需要另外一小部分数据,如果不同的业务读取不同的Key,又可以将请求进行分散,这是非常简单,而且有效的方式。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
平均精度(Average Precision,mAP)是一种常用的用于评估目标检测模型性能的指标。在目标检测任务中,模型需要识别图像中的不同目标,并返回它们的边界框(bounding box)和类别。mAP用于综合考虑模型在不同类别上的准确度和召回率。
deephub
2023/08/28
2.8K0
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
目标检测中的平均精度(mAP)详解--建议收藏+掌握
本文将详细介绍目标检测中的平均精度(mAP),建议收藏并掌握。(公众号:OpenCV与AI深度学习)
Color Space
2022/09/26
10K0
目标检测中常提到的IoU和mAP究竟是什么?
intersect over union,中文:交并比。指目标预测框和真实框的交集和并集的比例。
AI粉嫩特工队
2019/09/26
3.4K0
目标检测中常提到的IoU和mAP究竟是什么?
利用mAP评估目标检测模型
在本文中,我们将了解如何使用 precision 和召回率来计算平均精度 (mAP)。mAP 将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测越准确。
数据科学工厂
2023/01/19
8820
【必备】目标检测中的评价指标有哪些?
上期我们一起学习了全卷积神经网络FCN,今天我们看下目标检测中的评价指标都有哪些?
智能算法
2020/05/08
17.8K0
什么是MAP? 理解目标检测模型中的性能评估
【导读】近日,机器学习工程师Tarang Shah发布一篇文章,探讨了机器学习中模型的度量指标的相关问题。本文首先介绍了机器学习中两个比较直观和常用的度量指标:精确度和召回率,然后详细讲解了目标检测领
WZEARW
2018/04/13
3.2K0
什么是MAP? 理解目标检测模型中的性能评估
目标检测任务中的一些评估准则
本篇文章介绍一下目标检测中常用的一些评估准则,大家跑 yolo 的时候可能看着一堆输出不知道啥意思,希望这篇文章能够解决大家的疑惑,主要是翻译 GitHub 上的一个 repo,原文是英文写的,链接在这里,写的挺不错,就翻译过来给英文不好的同学看看,另外还加了几个项目中没有提到的准则
棒棒鸡不棒
2022/09/02
9870
目标检测任务中的一些评估准则
目标检测4: Detection基础之mAP
前面目标检测1: 目标检测20年综述之(一)和目标检测2: 目标检测20年综述之(二)让大家对目标检测有个大概的认识,机器学习评价指标合辑(Precision/Recall/F1score/P-R曲线/ROC曲线/AUC)介绍了基础的评价指标,如Precision、Recall、F score等概念,目标检测3: Detection基础之IoU中介绍了目标检测的评价指标IoU,接下来我们介绍目标检测最重要的评价指标mAP。
枫桦
2022/08/02
1K0
目标检测4: Detection基础之mAP
目标检测的中的指标的含义及其实现
IoU测量两个区域之间的重叠程度,在目标检测中衡量预测结果和标签(真实的目标边界)之间的重叠程度。
狼啸风云
2023/10/07
8030
目标检测的中的指标的含义及其实现
目标检测mAP计算方式
目标检测中常见的mAP计算说起来比较麻烦,所以结合VOC的计算代码进行一次详细的解析。
泽霖
2023/11/26
5940
什么是mAP ? 比较目标检测模型性能的统计量,了解一下?
翻译 | 张建军 出品 | 人工智能头条(公众号ID:AI_Thinker) 在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择。当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同。 每个模型的好坏是通过评价它在某个数据集上的性能来判断的,这个数据集通常被叫做“验证/测试”数据集。这个性能由不同的统计量来度量,包括准确率( accuracy )、精确率( precision )、召回率( recall )等等。选择我们会根据某个特定的应用场景来选择相应的统计量。而对每个应用来说,找到
用户1737318
2018/06/05
1K0
X射线图像中的目标检测
每天有数百万人乘坐地铁、民航飞机等公共交通工具,因此行李的安全检测将保护公共场所免受恐怖主义等影响,在安全防范中扮演着重要角色。但随着城市人口的增长,使用公共交通工具的人数逐渐增多,在获得便利的同时带来很大的不安全性,因此设计一种可以帮助加快安全检查过程并提高其效率的系统非常重要。卷积神经网络等深度学习算法不断发展,也在各种不同领域(例如机器翻译和图像处理)发挥了很大作用,而目标检测作为一项基本的计算机视觉问题,能为图像和视频理解提供有价值的信息,并与图像分类、机器人技术、人脸识别和自动驾驶等相关。在本项目中,我们将一起探索几个基于深度学习的目标检测模型,以对X射线图像中的违禁物体进行定位和分类为基础,并比较这几个模型在不同指标上的表现。
小白学视觉
2022/02/11
1.8K0
X射线图像中的目标检测
绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!
作者: 叶 虎 编辑: 赵一帆 前 言 本文翻译自Measuring Object Detection models - mAP - What is Mean Average Pr
机器学习算法工程师
2018/07/27
4.3K0
绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
近年来,目标检测技术取得了显著的进展,使得可以实现对解剖结构、病变或异常的自动识别和定位。多年来,目标检测方法取得了重大的进步,这是由于大规模的带有标注的数据集的出现和深度学习技术的开发所驱动的。这些技术在改善医疗诊断和治疗结果方面展示出巨大的潜力。
集智书童公众号
2024/01/17
1.3K0
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
YOLO 目标检测实战项目『原理篇』
在目标检测中,IoU 为预测框 (Prediction) 和真实框 (Ground truth) 的交并比。如下图所示,在关于小猫的目标检测中,紫线边框为预测框 (Prediction),红线边框为真实框 (Ground truth)。
机器视觉CV
2019/11/14
5.1K1
YOLO 目标检测实战项目『原理篇』
【小知识】目标检测各类指标概念总结
目标检测论文中出现过很多容易混淆的评价指标,比如FLOPS、FLOPs、 GFLOPS,包括最基本的AP、mAP这些定义,索性将这些基本概念搞清楚,做个总结。
机器学习AI算法工程
2024/07/04
5110
【小知识】目标检测各类指标概念总结
目标检测模型的评价标准-AP与mAP
为了了解模型的泛化能力,即判断模型的好坏,我们需要用某个指标来衡量,有了评价指标,就可以对比不同模型的优劣,并通过这个指标来进一步调参优化模型。对于分类和回归两类监督模型,分别有各自的评判标准。
h3110_w0r1d
2025/02/04
2940
从 YOLOv1 到 YOLOv2:目标检测的进化之路
你有没有想过,当你用手机拍一张照片,里面的人、车、狗是怎么被自动识别出来的?这背后靠的就是目标检测技术。目标检测是计算机视觉中的一个重要领域,它不仅要回答“图片里有什么”,还要告诉你“这些东西在哪里”。今天,我们要聊的是目标检测领域的两个经典模型:YOLOv1 和 YOLOv2。它们的名字听起来很酷——“You Only Look Once”(你只看一次),不仅名字帅,性能也很强。这篇博客将带你走进 YOLO 的世界,聊聊它们的原理、区别,以及那些听起来高大上的概念,比如 mAP、FPS、IoU 等。我们会尽量用大白话解释,并在后面深入讲解数学公式和代码实现,让你轻松看懂!
机器学习司猫白
2025/03/15
1290
从 YOLOv1 到 YOLOv2:目标检测的进化之路
睿智的目标检测20——利用mAP计算目标检测精确度「建议收藏」
这个是用来绘制mAP曲线的。 https://github.com/Cartucho/mAP 这个是用来获取绘制mAP曲线所需的txt的 https://github.com/bubbliiiing/count-mAP-txt
全栈程序员站长
2022/11/19
5170
睿智的目标检测20——利用mAP计算目标检测精确度「建议收藏」
机器学习中的评价指标
在人工智能领域,机器学习的效果需要用各种指标来评价。本文将阐述机器学习中的常用性能评价指标,矢量卷积与神经网格的评价指标不包括在内。
Datawhale
2019/10/12
7590
机器学习中的评价指标
相关推荐
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
更多 >
目录
  • 什么是HotKey
  • HotKey的危害
  • HotKey如何解决
    • Redis部署
      • 主从+哨兵集群
      • 数据分片集群
      • 隔离
    • 如何应对HotKey
      • 如何发现HotKey
      • 如何通知HotKey的产生
      • 如何处理HotKey
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档