2023-06-25:redis中什么是缓存穿透?该如何解决?

news2024/11/16 1:43:17

2023-06-25:redis中什么是缓存穿透?该如何解决?

答案2023-06-25:

缓存穿透

缓存穿透指的是查询一个根本不存在的数据,在这种情况下,无论是缓存层还是存储层都无法命中。因此,每次请求都需要访问数据库,这将导致不存在的数据每次都需要查询存储层,这样缓存就失去了保护后端存储的作用。缓存穿透问题的解决对于维护系统性能和资源利用至关重要。

造成缓存穿透的基本原因有两个。

缓存穿透的主要原因有两个。

首先,可能是由于业务代码或数据本身出现问题。例如,如果数据库中的ID从1开始自增,而某些请求携带了不存在的ID值(比如负数或特别大的值),如果对参数不进行校验,这些请求将会绕过缓存直接访问数据库。由于数据库中也查不到对应的数据,每个请求都会以相同的方式处理,这样会给数据库带来很大压力,尤其是在高并发的情况下,容易导致系统崩溃。

其次,缓存穿透也可能由恶意攻击、爬虫等行为造成,这些请求大量命中缓存但数据却不存在,导致每个请求都需要访问存储层。这种情况下,攻击者可以通过大量的无意义请求消耗系统资源,从而影响系统的正常运行。

image.png

如何解决

1.缓存空对象

当存储层不命中时,即使在数据库中也没有找到命中的数据,仍然将空对象保存到缓存层中。这样,下次对该数据的访问将从缓存中获取,从而保护了后端数据源的访问。然而,需要注意的是如果频繁存储空值,会导致缓存层占用更多的内存空间,尤其在面对攻击时问题更为严重。因此,可以为这类数据设置较短的过期时间,以使其能够自动被清理出缓存。

2.布隆过滤器拦截

在访问缓存层和存储层之前,使用布隆过滤器提前保存已存在的键,并进行第一层拦截。例如,对于一个推荐系统,存在4亿个用户ID,每个小时根据用户的历史行为计算并存储推荐数据。然而,对于最新的用户由于没有历史行为,可能发生缓存穿透。为此,可以将所有推荐数据的用户ID构建成布隆过滤器。如果布隆过滤器认为某个用户ID不存在,就不会进一步访问存储层,从而在一定程度上保护了存储层。

image.png

这些方法适用于数据命中率不高、数据相对稳定、实时性要求较低(通常是数据集较大)的应用场景。尽管实施这些方法可能会增加代码的维护复杂性,但能有效减少缓存空间的占用。

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

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

相关文章

关于C++图论树的某些题图形提示

一、去教室的路。 猫猫大学有n条路,每条路都有一个数字编号,其中的一条路一定与另外2条路相连,请你打出这个学校的地图。 输入1: 1 2 3 4 2 3 45 4 45 1 输出1: 1 2 3 4 5 45 图解 &#xff1…

动态住宅代理VS静态住宅代理,怎么选择?

现在,越来越多的海外代理服务商均支持动态住宅IP与静态住宅IP,很多小伙伴就疑惑,这二者有什么区别呢?哪个更好?其实,没有哪个更好,只有哪一个更合适您的业务。 无论动态住宅IP还是静态住宅IP都来自真实的住…

【软件测试】10道性能测试高频面试题,你能答上多少?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能测试包含了…

表格el-table多出一条横线,怎么解决(el-table表格下方多一条线的问题)

最近在写el-table表格的时候,发现的问题,表格多出一条横线, 可以看出其它行,都是正常显示,只有第7行多出一条横线,找了好久, 最后发现是el-table表格的伪元素,问题就出在这&#xf…

B站化播放量为播放时长,是谁的狂欢?

6月26日晚,B站举办了14周年庆典晚会。在晚会上,除了周深、美依礼芽同框献唱受到关注,B站董事长兼CEO陈睿的演讲内容同样值得深思: 一来,陈睿提到,要将目前B站视频前台显示的播放量数据从次数改为分钟数&am…

精进ARM计算架构,催生人工智能产业的巨大跨越

在优化ARM计算架构以支持人工智能应用方面,以下是一些常见的方法和技术: 算法和模型设计优化:选择合适的算法和模型结构对于在ARM架构上高效执行人工智能任务至关重要。设计轻量级的模型、减少冗余操作和参数量,使用适合ARM架构的…

【K8S系列】深入解析K8S调度

序言 做一件事并不难,难的是在于坚持。坚持一下也不难,难的是坚持到底。 文章标记颜色说明: 黄色:重要标题红色:用来标记结论绿色:用来标记论点蓝色:用来标记论点 Kubernetes (k8s) 是一个容器编…

扩展ExtendedFloatingActionButton滚动收缩展开行为

效果 首先ExtendedFloatingActionButton有默认的Behavior : ExtendedFloatingActionButtonBehavior,这个类是为了ExtendedFloatingActionButton不被SnakBar所遮挡,并且这个类它是protected,所以为了保留原有的设计,自定义的Behavior不能在外部定义&#…

Go语言单元测试

1、Go语言单元测试 Go语言中的测试依赖 go test 命令,go test 命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录 内,所有以 _test.go 为后缀名的源代码文件都是 go test 测试的一部分,不会被 go build 编译到最终的可执行 文件…

【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

链接:https://pan.baidu.com/s/18oE308_NVNPaCOACw_H5Hw?pwdabc1 利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28 这是网上的数据,怎么将它爬取下来 它将只爬取最近30期的双色球开…

星辰秘典:解开Python项目的神秘面纱——迷宫之星(迷宫探索与求解)

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(html css js) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:你好&#x…

文件系统理解——磁盘文件

磁盘文件 1. 问题提出2. 了解磁盘的物理结构2.1 磁盘大体结构2.2 磁盘的具体物理结构 3.对磁盘结构逻辑抽象3.1 OS是通过CSH方法进行扇区的管理的吗?3.2 磁盘逻辑过程 4.文件系统4.1 管理思想4.2 区结构Boot BlockSuper BlockGroup Descriptor Tableinode Table &am…

共享办公室在国内外的发展史以及现状介绍

共享办公室,这个曾经陌生的概念,如今已成为全球范围内炙手可热的话题。在这个时代,越来越多的人开始关注灵活性和协作性,而共享办公室正是在这种需求下应运而生的。本文将带您一探共享办公室的国内外发展史、国内当前发展现状以及…

记录一次nginx占用cpu饱满解决

一天下午,突然就爆满了。刚开始服务器都登不上,后来服务器可以登录上,宝塔进不去,网站访问不了,top后发现nginx爆满 执行下列代码,停止nginx服务 systemctl stop nginx 虽然停止了 可以上宝塔 再次手动…

硬件工程师JD

不知道这么做合不合适,我先发一个试试,团队在招人, 岗位是 航天航空电子工程师1,混合电推和起发电方向; 电机控制硬件工程师1,新能源汽车电机控制器硬件开发方向。 工作内容: 1、负责硬件系…

美国首只杠杆比特币期货ETF开盘,成交量近550万美元!

纽约时间6月27日,美国首只杠杆比特币期货ETF(股票代码:BITX)在CBOE BZX交易所开盘,成交量近550万美元,成为今年推出的ETF中首日交易量最大的产品。 BITX的推出,正值贝莱德(BlackRock)向SEC递交现…

【教学类-36-04】Midjounery 各种图片切割(通用公式)

作品展示: 6*6切割36图 5*4图:20张 问题产生: 之前的代码是:一张图的四个坐标,有4张就要写4行。 后续发现,Midjounery生成的图片矩阵X Y数量不等,不仅有3*3,还有4*3、5*4的结构&am…

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后,在cmd命令输入adb connect 127.0.0.1:62001,显示出设备则表示…

虚拟稀疏卷积在多模态 3D 目标检测中的应用

论文背景 虚拟点云生成时,从图像中生成的虚拟点非常密集,在检测过程中引入了大量的冗馀计算量。同时,不准确的深度补全所带来的噪声会显著降低检测精度。 早期利用图像特征扩展LiDAR点的特征的方法,如语义掩膜和二维CNN特征。他…

机器学习11:逻辑回归-Logistic Regression

目录 1.计算概率 2.损失和正则化 2.1 逻辑回归的损失函数 2.2 逻辑回归中的正则化 3.参考文献 1.计算概率 许多问题需要概率估计作为输出。逻辑回归是一种极其有效的概率计算机制。实际上,我们可以通过以下两种方式使用返回的概率: 原始概率&…