缓存三问与缓存预热-如何预防缓存崩溃

一、缓存三剑客

(图片来源:什么是缓存雪崩、击穿、穿透? | 小林coding)

  1. 缓存穿透 (Cache Penetration)

  • 又称"空缓存"
  • 指用户请求的数据在缓存和数据库中都不存在,导致每次请求都去查询数据库,给数据库带来巨大压力。
  • 解决办法:缓存无效key、布隆顾虑器、接口限流
  1. 缓存击穿 (Cache Breakdown)

  • 又称"热点Key"
  • 某个Key在缓存过期的瞬间,大量并发请求访问该Key,导致缓存被击穿,应用程序不得不从数据库加载数据,存在于数据库中,但不存在于缓存中
  • 解决办法:

             1.设置热点数据永不过期或者过期时间比较长。

              2.针对热点数据提前预热,将其存入缓存中并设置合理的过期时间。

              3.请求数据库写数据到缓存之前,先获取互斥锁,保证只有一个请求会落到数据库上。

  1. 缓存雪崩 (Cache Avalanche)

  • 又称"缓存失效"
  • 大量缓存key在某时段集中失效,导致大量请求涌入数据库,引发数据库压力过大甚至系统崩溃。
  • 解决办法:

           1.采用 Redis 集群,避免单机出现问题整个缓存服务都没办法使用。

            2.限流,避免同时处理大量的请求。

            3.设置不同的失效时间比如随机设置缓存的失效时间。

二、缓存击穿

【热点数据:通常会有几个数据会被频繁地访问,比如秒杀活动,这类被频地访问的数据】

如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,就无法从缓存中读取,直接访问数据库,数据库很容易就被高并发的请求冲垮,这就是缓存击穿的问题。可以认为缓存击穿是缓存雪崩的一个子集。

(图片来源:什么是缓存雪崩、击穿、穿透? | 小林coding)

三、缓存穿透

当用户访问的数据,既不在缓存中,也不在数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。那么当有大量这样的请求到来时,数据库的压力骤增,这就是缓存穿透的问题。

(图片来源:什么是缓存雪崩、击穿、穿透? | 小林coding)

四、缓存雪崩

大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩的问题。

(图片来源:什么是缓存雪崩、击穿、穿透? | 小林coding)

五、缓存预热

缓存预热是一种在应用程序启动或缓存失效之后,主动将热点数据加载到缓存中的策略。这样,在实际请求到达应用程序时,热点数据已经存在于缓存中,从而减少了缓存未命中的情况,提高了应用程序的响应速度。

缓存预热的主要作用和目的如下:

  1. 提高缓存命中率:通过预先加载热点数据,缓存预热可以提高缓存的命中率,从而减少对后端数据源(如数据库)的访问,降低系统的负载。
  2. 保持应用程序性能稳定:在应用程序启动或缓存失效之后,缓存预热可以防止请求对后端数据源产生突然的压力,从而保持应用程序的性能稳定。
  3. 优化用户体验:由于热点数据已经存在于缓存中,用户在请求这些数据时能获得更快的响应速度,从而提高用户体验。
  1. 缓存预热可以帮助避免缓存穿透问题。

    • 通过提前将可能被访问的数据预热到缓存中,可以确保首次访问就能命中缓存,不会直接访问到数据库。
  2. 缓存预热可以缓解缓存击穿问题。

    • 如果某个热点数据被提前加载到缓存中,即使该缓存在到期的瞬间大量并发访问,也不会直接击穿缓存。
  3. 缓存预热有助于减少缓存雪崩的风险。

    • 通过定期预热缓存,可以保证缓存中始终有足够的数据,即使部分缓存失效也不会对系统造成太大冲击。

推荐文章:面试官考我Redis中的缓存穿透、缓存雪崩和缓存击穿? 拿捏!!!-腾讯云开发者社区-腾讯云

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

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

相关文章

【深度学习】【NLP】词表,分词,嵌入

from transformers import AutoTokenizertokenizer AutoTokenizer.from_pretrained("prajjwal1/bert-tiny") tokenizer.save_pretrained("./bert-tiny/")input_string "Your input string here 我是中文" token_ids tokenizer.encode(input_s…

【PID算法详解】

PID算法 PID算法介绍用途pid数学表达式及其含义P算法D算法I算法 PID总结数学公式转换代码设计实际运用PID代码实现 PID算法介绍 PID控制器是一种广泛应用于工业控制系统的反馈控制器,它通过比例(Proportional)、积分(Integral&am…

快写猪好用吗 #知识分享#笔记#学习方法

快写猪是一个非常好用的论文写作工具,它提供了强大的查重降重功能,帮助用户轻松完成论文写作任务。无论是在学术研究还是日常写作中,快写猪都能提供高效、准确的检测,确保文本的原创性和质量。 首先,快写猪的查重降重功…

c 系统宏有多少

在C语言中,系统宏(也称为预定义宏或内置宏)的数量并不是固定的,因为它们取决于C标准、编译器以及可能的其他因素。然而,有一些常见的预定义宏是几乎所有C编译器都支持的。 以下是一些常见的C预定义宏: __…

利用预测大模型完成办公室饮水机剩余热水量

背景 在每天上班的时候,很多同事都有喝热水的习惯,但是饮水机内的热水量总是比较少的,如何避免等待,高效的接到热水是我接下来要做的事情的动机。 理论基础 在大量真实数据的情况下,可以分析出用水紧张的时间段和用水…

【css3】01-css3新特性样式篇

目录 1 背景 1.1 设置背景图片的定位 1.2 背景裁切-规定背景的绘制区域 1.3 设置背景图片尺寸 2 边框 2.1 盒子阴影box-shadow 2.2 边框图片border-image 3 文本 -文字阴影text-shadow 1 背景 1.1 设置背景图片的定位 background-origin:规定背景图片的定位…

科技守护,河流水文监测保障水资源安全!

中小河流是城乡水资源的补给,又是不可或缺的排放渠道,维系着城乡水资源的平衡与生态的健康。然而,随着工业化、城市化的快速推进,河流生态环境面临着越来越大的压力。为了有效保护和合理利用河流资源,河流水文监测成为…

2024年新算法-红嘴蓝鹊优化器(RBMO)优化BP神经网络回归预测

2024年新算法-红嘴蓝鹊优化器(RBMO)优化BP神经网络回归预测 亮点: 输出多个评价指标:R2,RMSE,MSE,MAPE和MAE 满足需求,分开运行和对比的都有对应的主函数:main_BP, main_RBMO, main_BPvsBP_R…

亡羊补牢,一文讲清各种场景下GIT如何回退

系列文章目录 手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 常用GIT命令详解,手把手让你登堂入室 GIT实战篇,教你如何使用GIT可视化工具 GIT使用需知,哪些操作…

区块链的运行原理与演示

目录 前言 具体演示 1、在浏览器中输入区块链演示网址: 2、创建新区块 3、篡改区块信息使其无效 4、新增P2P 网络节点。 5、节点连接。 6、区块信息同步 总结 前言 区块链系统是由一系列分布在全球各地的分布式节点组成的。这些节点互不隶属,通过…

Mesa GL Dispatch分发分析与理解

Mesa GL Dispatch分发分析与理解 引言 这篇博客的核心是从OpenGL应用程序的典型api入手,分析gl api 调用到用户态驱动后端的过程,进而总结出一个典型的调用栈。理解了这个典型调用栈,对后续任何一个API的调用过程分析,都是a piec…

文本匹配.grep与Select-String用法对比

Linux Shell与PowerShell上匹配字符串 grep与Select-String用法对比 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article…

家居厨房安全无小事:可燃气体报警器探头校准检测重要性解析

家居厨房作为日常生活中烹饪美食的重要场所,其安全问题不容忽视。 近年来,随着家庭用气设备的普及,煤气泄露事件时有发生,给人们的生命财产安全带来了严重威胁。 因此,安装可燃气体报警器探头,及时检测并…

Python Orange3库:数据挖掘与机器学习的终极利器

更多Python学习内容:ipengtao.com Orange3是一个开源的数据挖掘和机器学习库,提供了丰富的工具和算法来处理和分析数据。Orange3的图形用户界面使得非编程用户也能轻松进行数据分析,而其Python API则为编程用户提供了强大的灵活性。本文将详细…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型,在使用图片的时候不同用途需要使用的图片格式也是不同的,比如我们手中有一张jpg格式图片,但是平台上传要求格式是png,那么怎样才能将jpg转png格式呢?下面将教大家图片…

模拟量4~20mA电流传感器接线方式

一、模拟量4~20mA电流传感器接线方式 无源双线制是常见的电流型传感器接线方式,它具有简单、经济的特点。其接线方式如下: 传感器的“”接到数据采集器的电源“”上, 传感器的“-”端子连接到数据采集器的“AI”端子上, 数据采集器…

无人机+EasyDSS互联网视频平台:构建秸秆焚烧监控的“天眼”系统

一、方案背景 在每年的夏收时节,秸秆禁烧成为各地政府面临的一项重要任务。随着夏收季节的结束,大量农作物秸秆的处理问题逐渐凸显。一方面农作物种植面积辽阔,禁烧区域面积较大,监管巡逻人员的数量有限,无法全面顾及…

使用 ASM 修改字段类型,解决闪退问题

问题 我的问题是什么? 在桥接类 UnityBridgeActivity 中处理不同 unity 版本调用 mUnityPlayer.destroy(); 闪退问题。 闪退日志如: 闪退日志说在 UnityBridgeActivity中找不到类型为 UnityPlayer 的属性 mUnityPlayer。 我们知道,Android…

【鸟叔的Linux私房菜】2-主机规划与磁盘分区

文章目录 2.1 Linux与硬件的搭配各硬件设备在Linux的文件名使用虚拟机学习 2.2 磁盘分区磁盘连接方式和设备文件名的关系MBR(MS-DOS)与GPT磁盘分区表MBR(MS-DOS)GPT磁盘分区表 启动流程的BIOS与UEFI启动检测程序BIOS搭配MBR/GPT的启动流程UEFI BIOS搭配 GPT启动的流程 Linux安装…

RGB 平均值统计

任务:有一一对应的图片多组如下,希望统计灰色部分原有grb平均值,彩色部分rgb平均值。 方法:由下图对各个像素分析,分为3类,并记录坐标,根据坐标统计上图的rgb平均值,结果放在一张Exc…