当前位置: 首页 > news >正文

谈一谈缓存穿透,击穿,雪崩

在这里插入图片描述

缓存穿透

缓存穿透是指在使用缓存系统时,频繁查询一个不存在于缓存中的数据,导致这个查询每次都要通过缓存层去查询数据源,无法从缓存中获得结果。这种情况下,大量的请求会直接穿透缓存层,直接访问数据源,从而增加了系统的负载,降低了系统的性能。

通常情况下,当一个查询发现所需数据不存在于缓存中时,它会从数据源中获取数据,并将数据存储到缓存中,以便后续查询可以直接从缓存中获取数据。然而,当不断查询不存在于缓存中的数据时,缓存层会无法起到预期的性能提升作用,因为每次查询都必须去访问数据源。

缓存穿透可能由恶意攻击、系统设计问题或数据变更等原因引起。为了防止缓存穿透,可以在缓存层添加缓存不存在的数据的标记,当查询到缓存中有这个标记时,可以避免不必要的访问数据源,从而提高系统的性能。另外,使用布隆过滤器等技术可以对查询进行预处理,过滤掉一些明显不存在的查询,进一步减轻系统压力。

缓存击穿

缓存击穿是指当一个热点数据在缓存中过期或被删除时,同时有大量的并发请求访问该数据,导致这些请求都无法从缓存中获取到数据,而需要直接从数据源中获取。这种情况下,大量的请求会直接访问数据源,给数据源带来很大的压力,可能导致数据源崩溃或性能下降。

在正常情况下,缓存会存储常用的数据,以提高系统的性能和响应速度。当一个查询发现所需的数据不存在于缓存中时,它会从数据源中获取数据,并将数据存储到缓存中,以便后续查询可以直接从缓存中获取数据。然而,当一个热点数据在某一时刻过期或被删除时,大量的请求会同时涌入,这些请求无法从缓存中获取数据,导致缓存层无法起到预期的性能提升作用。

为了防止缓存击穿,可以采取以下策略:

  1. 设置合适的缓存过期时间:确保缓存数据在合适的时间内过期,避免在同一时间大量数据过期导致缓存击穿。

  2. 使用互斥锁或分布式锁:当缓存过期时,使用锁机制保证只有一个请求可以从数据源中获取数据,其他请求等待获取到数据后再从缓存中获取。

  3. 预加载热点数据:在系统启动或数据源更新时,提前加载热点数据到缓存中,避免在热点数据过期时出现缓存击穿。

  4. 使用高可用的缓存方案:使用多级缓存或分布式缓存系统,确保缓存的高可用性,避免单点故障导致缓存击穿。

缓存雪崩

缓存雪崩指的是当缓存系统中的大量数据同时失效或过期,导致大量的请求直接访问数据源,给数据源和系统带来巨大的压力,从而导致系统性能下降甚至崩溃。

正常情况下,缓存系统会设置合理的过期时间,以使被缓存的数据在一段时间内有效。当一个查询发现所需数据不存在于缓存中时,它会从数据源中获取数据,并将数据存储到缓存中,以便后续查询可以直接从缓存中获取数据。

然而,当大量的缓存数据在同一时间失效或过期时,如果没有有效的缓存更新机制,系统中的请求就会直接访问数据源。由于大量请求同时涌入数据源,可能会导致数据源的性能下降、响应时间延长甚至崩溃。这种情况下,系统会经历一段时间的高负载压力,如同雪崩一般,被称为缓存雪崩。

为了避免缓存雪崩,可以采取以下策略:

  1. 合理设置缓存的过期时间:缓存过期时间应随机分散,避免大量缓存在同一时间失效。

  2. 使用缓存的自动过期机制:例如,使用Redis的过期机制,设置缓存的过期时间,并自动更新缓存,避免过期数据的同时失效。

  3. 设置热点数据的永久缓存或手动刷新机制:重要的热点数据可以设置为永久缓存,或者手动进行缓存更新,避免热点数据过期导致缓存雪崩。

  4. 引入多级缓存:使用多级缓存,例如将热点数据存储在内存缓存中,冷数据存储在持久化缓存或数据库中,以降低缓存雪崩的风险。

  5. 监控和预警机制:监控缓存系统的状态和性能,设置预警机制,在发现异常情况时及时采取措施,避免缓存雪崩的发生。

文末小叙:
对于这些内容,就没有那么简单易懂,而且也没有代码辅助,属于纯理论,但是真实的开发中,我们会涉及这些问题,所以还是需要注意一下,不能单纯为了面试,因为最终的结果我们还是需要落实开发!

相关文章:

谈一谈缓存穿透,击穿,雪崩

缓存穿透 缓存穿透是指在使用缓存系统时,频繁查询一个不存在于缓存中的数据,导致这个查询每次都要通过缓存层去查询数据源,无法从缓存中获得结果。这种情况下,大量的请求会直接穿透缓存层,直接访问数据源,…...

如何对反编译的安卓应用进行调试并修改

安卓修改大师可以在没有源代码的情况下,直接反编译已经打包的APK安装包,通过修改SMALI代码实现添加和去除部分功能,并在应用的任何地方添加任意代码,增加任意任何您想实现的功能。通过这种方式,把该应用变为您自己的应…...

C#实现数据库数据变化监测(sqlservermysql)

监测数据库表数据变化,可实现数据库同步(一主一从(双机备份),一主多从(总部数据库,工厂1,工厂2,工厂数据合并到总部数据)) sqlserver 启用数据库…...

MFC第二十三天 HBrush对闭合图形的填充、CPen、CFont类常用功能与LOGFONT和LOGPEN结构体

文章目录 HBrush对闭合图形的填充HBITMAP位图资源的加载和平铺填充CFont类常用功能与LOGFONT结构体CPen类简介 HBrush对闭合图形的填充 HBRUSH创建: a)实色填充: HBRUSH CreateSolidBrush( COLORREF color);b)栅格线填充: HBRUSH CreateHa…...

深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令

目录 前言 一、scan 命令 二、数据库管理命令 select dbsize flushdb / flushall 前言 之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到,但是整个操作比较危险,可能会一下子的都太多的 key,阻塞 redis 服务器. …...

python+opencv实现显示摄像头,截取相关图片,录取相关视频

实时显示摄像头图像 按下空格键,截取图片 按下tab键,开始录制摄像内容,再次按下,结束录制 按下Esc键,关闭窗口 import cv2 import numpy#第几章图片 img_count0InitVideoFalse #第几个视频 video_count0 video_flagFa…...

第十章:重新审视扩张卷积:一种用于弱监督和半监督语义分割的简单方法

0.摘要 尽管取得了显著的进展,弱监督分割方法仍然不如完全监督方法。我们观察到性能差距主要来自于它们在从图像级别监督中学习生成高质量的密集目标定位图的能力有限。为了缓解这样的差距,我们重新审视了扩张卷积[1]并揭示了它如何以一种新颖的方式被用…...

指令收集:DOCKER+K8S

docker 1.镜像指令:docker images 1、docker images : 列出本地主机上的镜像OPTION字段说明: -a 列出所有本地镜像, -q 只显示镜像ID2、docker search 某个镜像名字 : 查找某个镜像加上 --limit 5 redis&#xff…...

Minecraft 1.20.x Forge模组开发 05.矿石生成

我们本次尝试在主世界生成模组中自定义的矿石 效果演示 效果演示 效果演示 1.由于1.20的版本出现了深板岩层的矿石,我们要在BlockInit类中声明一个矿石的两种岩层形态: BlockInit.java package com.joy187.re8joymod.init;import java.util.function.Function;import java…...

运维面试大全

文章目录 第一阶段你是用过哪些Linux命令Linux 系统安全优化与内核优化经常使用shell脚本做什么软连接与硬链接的区别怎么查看文件IOS七层模型三次握手与四次挥手lvm 逻辑卷创建过程磁盘配额raid 磁盘阵列文本三剑客防火墙iptables与firewardLinux系统资源查询命令日志的八大等…...

【线程安全的讨论(一)】CPU多核缓存架构和JMM

CPU多核缓存架构 一、CPU多核缓存架构可见性问题乱序执行(指令重排) 二、JMM——Java内存模型 一、CPU多核缓存架构 计算机的基本组成图 CPU 缓存为了提高程序运行的性能,现代 CPU 在很多方面会对程序进行优化。CPU 的处理速度很快&#xf…...

以太网交换机的生成树协议STP

概述 网络环路带来的问题 广播风暴 广播帧在各个交换机之间反复转发,分别按顺时针和逆时针方向不停的同时兜圈。广播风暴会大量消耗网络资源,使得网络无法正常转发其他数据帧。 主机收到反复的广播帧,会大量消耗主机的资源。交换机的帧交换…...

手机照片转换成pdf怎么做?了解这几种方法就可以了

手机照片转换成pdf怎么做?转换照片为PDF的需求在日常生活中很常见。无论是收集有关旅行、家庭或工作的照片,将它们组织成一个PDF文件可以更方便地分享给朋友或同事。那么下面就给大家分享几个手机照片转换成pdf的方法。 虽然有多种软件和工具可以将照片转…...

跨境电商还有人在做吗,这十大选品技巧建议收藏!

随着电商的快速发展,无论国内或者国外电商,竞争都比较激烈,很多人觉得现在入行太晚了,玩不过那些老卖家。 不过我想说的是:做电商很重要的一点就是选品,那些很早一批老卖家可能也是借着红利期走过来的&…...

HTML快速学习

目录 一、网页元素属性 1.全局属性 2.标签 2.1其他标签 2.2表单标签 2.3图像标签 2.4列表标签 2.5表格标签 2.6文本标签 二、编码 1.字符的数字表示法 2.字符的实体表示法 三、实践一下 一、网页元素属性 1.全局属性 id属性是元素在网页内的唯一标识符。 class…...

centos7搭建k8s环境并部署springboot项目

之前看了很多文章,都是部署后一直报错,百度解决后下次又忘了,这次决定把从头到尾的过程记录下来方便下次再看,部署参考文章尚硅谷Kubernetes(k8s)视频学习笔记_尚硅谷k8s笔记_溯光旅者的博客-CSDN博客 1、…...

nuitka打包软件程序

将python代码打包成exe桌面程序 1、打包参数含义 """-–mingw64 默认为已经安装的visio stdio去编译-–standalone 独立环境,这是必须的(否则拷给别人无法使用)-–windows-disable-console 没有CMD控制窗口-–output-dirout 生成exe到out文件夹下面…...

12-3_Qt 5.9 C++开发指南_创建和使用静态链接库

第12章中的静态链接库和动态链接库介绍,都是以UI操作的方式进行,真正在实践中,可以参考UI操作产生的代码来实现同样的功能。 文章目录 1. 创建静态链接库1.1 创建静态链接库过程1.2 静态链接库代码1.2.1 静态链接库可视化UI设计框架1.2.2 qw…...

conda模式安装paddlepaddle2.4.2版本

conda模式安装paddlepaddle2.4.2版本 一、下载anaconda 2022.10 window-x86-x64.exe 清华镜像源Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror,进去后根据自己的需要选择对应的版本下载 下载安装到磁盘空闲空间要大的D:\Pr…...

英语疑问句

文章目录 一般疑问句特殊疑问句 一般疑问句 英语肯定句怎么改成一般疑问句? 1.假如句子中有"情态动词、助动词、be动词"则直接提前。2.假如句子,只有实义动词,就要借助"do,does,did"放在句子前面,并将实义动词改为"…...

植物基肉类替代品市场的增长与投资机会

植物基肉类替代品市场的增长与投资机会 关键词:植物基肉类替代品、市场增长、投资机会、消费趋势、行业发展 摘要:本文聚焦于植物基肉类替代品市场,深入分析其市场增长的驱动因素、现状及未来趋势,同时探讨了该领域蕴含的投资机会。通过对核心概念的阐释、相关算法原理的介…...

3步解锁加密音乐:ncmdumpGUI技术解析与实战指南

3步解锁加密音乐:ncmdumpGUI技术解析与实战指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款专为网易云音乐用户设计的NCM文件…...

终极Cursor Pro破解教程:告别免费限制,解锁无限AI编程体验

终极Cursor Pro破解教程:告别免费限制,解锁无限AI编程体验 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve r…...

ROS2(2)配置:从WSL网络到Docker容器GUI显示的完整链路

1. WSL2网络架构解析与ROS2容器网络配置 在WSL2Docker环境中运行ROS2时,网络问题是最常见的拦路虎。我刚开始用这个组合时,经常遇到镜像拉取超时、容器内无法访问外网的情况,后来才发现问题出在对WSL2网络机制的理解不足上。 WSL2采用虚拟化技…...

PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间

PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间 1. PyTorch 2.8镜像概述 PyTorch 2.8镜像是一个开箱即用的深度学习环境,预装了PyTorch 2.8和CUDA工具包。这个镜像最大的亮点是支持多GPU并行计算,能够显著加速模型…...

北海网红美食有哪些

行业现象观察:北海海鲜餐饮的消费图谱在北海,尤其是侨港镇区域,海鲜餐饮呈现出鲜明的“游客本地”双轨特征。晚间时段,从侨港风情街延伸至文化中心一带,用餐高峰时段常出现人流密集、烟火气十足的景象。本地居民多选择…...

Ubuntu22.04下RocketMQ-CPP客户端2.2.0编译踩坑实录(附完整依赖包下载)

Ubuntu 22.04下RocketMQ-CPP客户端2.2.0编译全指南:从依赖解析到实战应用 在分布式消息中间件领域,RocketMQ以其高吞吐、低延迟的特性成为企业级应用的首选。而RocketMQ-CPP客户端作为C生态的重要桥梁,其编译过程却常让开发者陷入依赖地狱和…...

告别系统卡顿:RyTuneX全方位性能优化指南

告别系统卡顿:RyTuneX全方位性能优化指南 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: https://…...

AI写专著超实用攻略:精选工具推荐,提升写作效率与质量

第一次尝试写学术专著的挑战与AI写作工具介绍 对于第一次尝试写学术专著的研究者来说,写作的过程就像是一场充满挑战的冒险之旅,伴随着许多不确定的困难。在选题方面常常陷入困扰,难以在“具有价值”和“可行性”之间找到合适的平衡。有时选…...

Koodo Reader:您的跨平台电子书阅读解决方案,让阅读无处不在

Koodo Reader:您的跨平台电子书阅读解决方案,让阅读无处不在 【免费下载链接】koodo-reader A modern ebook manager and reader with sync and backup capacities for Windows, macOS, Linux, Android, iOS and Web 项目地址: https://gitcode.com/Gi…...