缓存穿透、缓存击穿、缓存雪崩目前记录(纯日记)

news2025/6/2 9:35:37

今天学了学这三个知识,这命名真是有点东西。

1.先说在命名方面与其余两个内容能明显区分开的缓存雪崩,简单来讲:

缓存雪崩就是缓存宕机了,也甭管咋宕机了,反正就是某一时刻,缓存用不了了。

那咋办,缓存用不了了,大量的操作就直接来到了数据库,数据库那压力闷了,不一会儿数据库就崩了。那么解决方法简单来将就设计多级缓存,多来几层缓存,不可能倒霉到每层都崩吧。

那说万一都崩了咋办,那还有redis集群嘛,redis集群我没学过,我大胆猜测redis集群就是一群redis缓存,然后多个集群进行汇总成一个redis群,就和一个年级进行分班一样。一个群干一个群的事儿。

2.缓存穿透:

缓存穿透和缓存击穿这两个玩意儿我是真有点分不清,不是概念分不清而是名字有些拗口,对于缓存穿透而言,首先得理解穿透这个概念,穿透穿透,说明缓存还在正常运行但是不起效果了。

诶,这样一解释好像说得通了。

那么缓存穿透指的就是缓存尸位素餐了,为啥呢?大概是认为,毕竟缓存没有思维,只能进行认为破坏嘛。

所以简单来说缓存穿透实质上就是人对服务器得一种攻击,通过生成大量的无意义得内容访问服务器。比如现在人人都能访问我的连接,比如我的网址是:

www.sjhp.com/demo/1至www.sjhp.com/demo/100

我的调用接口是www.sjhp.com/demo/{id}

那么此时,我的/1到/100对应的资源都存放在我的缓存中。

如此简单的请求方式,人为攻击过于简单,只需要不停的往我的连接www.sjhp.com/demo/{非0至100}发送无意义的数据内容,此时我的服务器接收到这些无意义的内容不仅在数据库无法查找,缓存中也没有。

那么根据缓存一般的存储特性,缓存无法命中,这些无意义的数据就会直接攻击我的数据库,造成我的数据库持续的进行查找,从而导致数据库崩溃。

这就是缓存穿透,简单来讲就是缓存尸位素餐。

那处理缓存穿透的最好办法就是在前端做防护,让人不要那么轻易的拿到数据连接进行访问,所以就需要对前端url进行加密,这个不理解的可以看看各大云盘的网址加密()

那么后端人员从来都正常看待前端发来的信息看的,所以后端人员还需自行加护。

第一种鸵鸟式防御就是,空值返回。

刚才不是说你人就是奔着我数据库来的嘛,那我得想办法让我缓存帮我数据库分担压力啊

此时有人就说头疼了捂嘴

你攻击我数据库,那你和我缓存说去吧,对于人为传递来的不存在于数据库的攻击信息直接存储在缓存中,用null进行标记。

之所以是头疼了捂嘴啊,因为攻击者换个链接又能继续攻击了。目前没有经历过实际的项目,只能理解这么多了。

第二种方式就是添加新的布隆层,可以看作是一种算法,对攻击起到一定的隔离效果。

3.最后说说缓存击穿

这又是个啥呢?缓存穿透是缓存正常运行只不过对面攻击是真伤啊,缓存没der用啊,直接给我数据库造成真实伤害。

这缓存击穿从名字来看,他就是奔着我缓存来的:

那么场景也很明显了,啥时候会直接给我的缓存干崩呢?

那么就不得不说缓存击穿的另外一个雅称:热点KEY问题

缓存本身存储的就是高热点的内容,那么当每个热点数据对应的缓存在某个时间消失了,最简单的就是TTL过期,那么此时大量的并发线程来访问某个数据热点,此时缓存没命中,显然就会去查询数据库。

我们众所周知,这个查库的速度是相当慢的,而大量的并发线程正在轮番蹂躏缓存,发现缓存数据不存在,咋办?那又同时去访问数据库嘛,最后造成数据库的崩溃。

这个防御方法可以去设计互斥锁模式和逻辑过期模式。

互斥锁就很简单,同一个数据要访问我缓存的时候,诶我直接给你锁上,你其他线程进不来,等第一个上厕所的吃干抹净,再开锁。那很显然,其余线程上不了厕所只能外边儿等。

这就避免一个厕所几万个人上干的到处都是的矛盾(),但是虽然里边儿安静了,外边儿可闹腾了。那这就是上厕所上锁的方式。

然后说逻辑过期:

上面的方式不太人道,虽然先来先到,但是我们不能不解决大多数人的实际问题。

这时候有人想了个高招,原来之所以慢是因为原来的进程上厕所玩儿手机,一次干个30分钟,谁受得了。所以限定访问时间很重要。那此时某个进程A进去访问缓存,发现缓存命中但是过期了(啥意思呢,就类似于数据库的逻辑删除,数据没删但是标记这数据删了),此时这个进程A说,爱咋咋地,我管你这那的,我拿着已经被逻辑删除的数据我就回了,然后通知另外一个牛马进程B取对数据进行读取与缓存回写。那么在回写的过程中,其余的进程看进程A都这样干了,那他们也有样学样了。

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

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

相关文章

鸿蒙OS的5.0.1.120版本体验怎么样?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 越来越是好用了,之前是凑合能用,现在是大多能用。 我朋友的mate30PRO和PuraX一起用,新系统确实满足我90%以上的需求 一个系统适配一款机型,是要…

使用ssh-audit扫描ssh过期加密算法配置

使用ssh-audit扫描ssh过期加密算法配置 安装检查ssh的加密算法配置修改ssh的加密算法配置 安装 # pip3安装ssh-audit pip3 instal ssh-audit检查ssh的加密算法配置 # 检查ssh的配置 ssh-audit 192.168.50.149修改ssh的加密算法配置 # 查看ssh加密配置文件是否存在 ls /etc/c…

Java+Playwright自动化-2-环境准备与搭建-基于Maven

1.简介 上一章中已经讲如何通过引入jar包来搭建JavaPlaywright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简…

由sigmod权重曲线存在锯齿的探索

深度学习的知识点,一般按照执行流程,有 网络层类型,归一化,激活函数,学习率,损失函数,优化器。如果是研究生上课学的应该系统一点,自学的话知识点一开始有点乱。 一、激活函数Sigmod…

二、OpenCV图像处理-图像处理

目录 1、连通性 2、形态学操作 2.1腐蚀和膨胀 2.2开闭运算 2.3礼帽和黑帽 2.4总结 3、图像平滑 3.1图像噪声 3.2均值滤波 3.3高斯滤波 3.4中值滤波 3.5总结 4、直方图 4.1直方图的原理与显示 4.2掩膜的应用 4.3直方图均衡化 4.4自适应均衡化 4.5总结 5、边缘…

UPS的工作原理和UPS系统中旁路的作用

UPS(不间断电源)根据工作原理和适用场景的不同,主要分为以下三种类型,每种类型的特点和适用场景如下: 1. 后备式UPS(Offline/Standby UPS) 工作原理: 正常供电时,负载直接…

麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题

1. 麒麟系统部署海康摄像头时的 JNA 链接错误&#xff0c; 海康提供的jna sdk版本太低&#xff0c;需升级版本4.5及以上&#xff0c;把集成的Structure 替换成以下类 public class SDK_Structure extends Structure {protected List<String> getFieldOrder() {List<St…

Python图片格式批量转换器教程

&#x1f4da; 前言 编程基础第一期《11-30》-- 在图像处理工作中&#xff0c;我们经常需要将大量图片从一种格式转换为另一种格式。本教程将介绍如何使用Python的Pillow库开发一个简单但功能强大的图片格式批量转换器&#xff0c;帮助你高效处理图片格式转换任务。 目录 &…

从公开到私密:重新思考 Web3 的数据安全

去中心化存储是 Web3 的基石之一&#xff0c;使用户和应用能够在无需依赖中心化服务商的情况下存储数据。但自由也带来了一个重大挑战&#xff1a;数据安全。在一个无许可的世界中&#xff0c;如何确保用户文档、游戏资产或 AI 数据集等敏感内容是私密的、可控访问的&#xff0…

计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍

计算机网络体系结构 从本此开始&#xff0c;我们就要开始介绍有关计算机网络体系结构的知识了。内容包括&#xff1a; 常见的计算机网络体系结构 计算机网络体系结构分层的必要性 计算机网络体系结构的设计思想 举例说明及专用术语 计算机网络体系结构是计算机网络课程中…

接口自动化测试用例的编写方法

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口&#xff0c;需要对接口头部进行封装&#xff0c;所以没有办法在浏览器下直接调…

基于SpringBoot的商家销售管理网站的设计与实现

湖南软件职业技术大学 本科毕业设计(论文) 设计(论文)题目 基于SpringBoot的商家销售管理网站的设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕…

word中表格拉不动以及插入图片有间距

1、word中表格插入图片始终有间隙&#xff0c;怎么调表格高度和宽度都消除不了间隙&#xff0c;如下所示&#xff1a; 可以在表布局—单元格边距—修改上下左右边距为0即可 2、经过上述调整后左右没有间隔了&#xff0c;但图片上下有间隔&#xff0c;直觉是行距问题&#xff0c…

【Java学习笔记】接口

接口 应用场景引出 一、接口的介绍 1. 接口的基本结构 interface 接口名{属性抽象方法 }引出关键字&#xff1a;implements 2. 子类实现接口 class a implements 接口名{}3. 接口中的属性说明&#xff1a;属性默认是public static final修饰的 &#xff08;1&#xff09;f…

代码随想录打卡|Day50 图论(拓扑排序精讲 、dijkstra(朴素版)精讲 )

图论part08 拓扑排序精讲 代码随想录讲解链接 题目链接 思路 在这个题目之中&#xff0c;个别文件的处理依赖于别的文件&#xff0c;因此&#xff0c;文件的处理顺序十分重要。我们用图来表示文件的处理顺序&#xff0c;文件s指向文件t&#xff0c;则说明如果要正确的处理文…

SI24R05国产低功耗2.4GHz+125K低频唤醒SoC人员定位/畜牧业牛羊定位/资产管理定位方案芯片

目录 SI24R05简介功能框图 主要特性开发工具方案特性 SI24R05简介 Si24R05 是一款高度集成的低功耗 SOC 芯片&#xff0c;具有低功耗、Low Pin Count、 宽电压工作范围&#xff0c;集成了 13/14/15/16 位精度的 ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器、…

基于ELK的分布式日志实时分析与可视化系统设计

目录 一、ELK平台介绍 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.资源清单 2.基本配置 3.安装Elasticsearch&#xff08;elk1上、elk2上、elk3上&#xff09; 4.安装logstash&#xff08;elk1上&#xff09; 5.Filebeat 6.安装Kibana&#x…

酒店管理系统设计与实现

本科毕业设计(论文) 设计(论文)题目 酒店管理系统设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 李建 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕业设计(论文)作品是本人在指导教师的指…

OpenCV---pointPolygonTest

一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数&#xff0c;常用于&#xff1a; 目标检测&#xff1a;判断像素点是否属于检测到的轮廓区域碰撞检测&#xff1a;检测物体是否重叠图像分割&#xff1a;确定点是否在分割区域内几何分析&am…

Qt 的简单示例 -- 地址簿

这个工程里有两个窗口&#xff0c;都是QWidget派生的窗口 主窗口&#xff1a; 1. 运用了布局&#xff0c;按钮控件&#xff0c;单行编辑框&#xff0c;富文本编辑框等窗口部件&#xff1b; 2. 运用了 QMap 类&#xff1b; 3. 实现了点击按钮弹出子窗口的功能&#xff0c;这里子…