Redis的缓存穿透、缓存击穿、缓存雪崩_reids的雪崩-程序员宅基地

技术标签: 缓存  数据库  redis  

目录

一、缓存穿透

1.什么是缓存穿透

2.常见的缓存穿透情况

3.缓存穿透会带来的问题 

4.解决缓存穿透问题可以采取的方法 

5.总结

二、缓存击穿

1.什么是缓存击穿

2. 常见的缓存击穿情况

3. 缓存击穿会带来的问题

4. 解决缓存击穿问题可以采取的方法 

5.总结

三、缓存雪崩

1.什么是缓存雪崩

2.常见的缓存雪崩情况

3. 缓存雪崩会带来的问题

4. 解决缓存雪崩问题可以采取的方法

5.总结

四、Redis问题小结

1.共同点:

2.解决方法:


一、缓存穿透

1.什么是缓存穿透

缓存穿透是指在使用缓存系统时,特定的查询在缓存和数据库中都找不到结果,导致每次查询都要访问数据库,从而增加数据库的压力,降低系统的性能。

当一个查询请求经过缓存系统时,缓存先检查是否有缓存的结果,如果有则直接返回给客户端,如果没有则查询数据库并将结果存入缓存后返回。但是,如果查询的数据在数据库中不存在,那么每次查询都会通过缓存系统直接访问数据库,导致数据库无效查询增加,浪费了系统资源。

2.常见的缓存穿透情况

  1. 查询不存在的数据:当用户查询一个不存在的数据,例如某个不存在的用户ID,由于缓存中没有缓存该数据,每次查询都会失败并直接访问数据库。

  2. 恶意查询:如果攻击者故意发送大量不存在的请求,试图绕过缓存,并导致大量无效的数据库查询请求。

3.缓存穿透会带来的问题 

  1. 增加数据库负载:由于缓存穿透导致大量无效的数据库查询操作,增加了数据库的负载,可能导致数据库性能下降。

  2. 击穿缓存:如果缓存中缓存了查询结果为空的键,恶意攻击者可以通过大量请求这些不存在的键,使缓存中的该键过期,从而导致后续请求都直接访问数据库,形成缓存击穿

4.解决缓存穿透问题可以采取的方法 

  1. 布隆过滤器(Bloom Filter):在查询前先通过布隆过滤器快速判断查询的数据是否存在,若不存在则不再访问缓存和数据库,减轻数据库压力。

  2. 空结果缓存:在缓存中存储空结果的键,可以避免缓存穿透,防止恶意攻击。

  3. 延迟双写:在查询到数据库不存在该数据时,在缓存中也写入一个空结果的占位符,设置较短的过期时间,以防止并发大量请求穿透缓存直接访问数据库。

  4. 异步更新缓存:当发现缓存和数据库中都不存在某个查询结果时,可以使用异步更新缓存的方式,先返回空结果给用户,然后通过后台任务去查询数据库并更新缓存,提高查询的响应速度和系统的并发能力。

5.总结

 综上所述,缓存穿透是一种常见的缓存问题,采取适当的预防措施可以避免对数据库造成不必要的压力,并提高系统的性能和稳定性。

二、缓存击穿

1.什么是缓存击穿

缓存击穿是指在使用缓存系统时,一个热门的、经常被访问的数据缓存过期或失效时,大量并发请求同时涌入,直接访问数据库,导致数据库负载剧增,造成系统性能下降甚至崩溃的情况。

2. 常见的缓存击穿情况

  1. 高并发热点数据:某个数据非常热门,并且被大量并发请求频繁访问。如果该数据的缓存过期或者被意外清空,大量的请求会直接访问数据库,导致数据库压力激增。

  2. 突发请求:在某个时间点突然出现大量请求访问某个数据,而该数据的缓存恰好在此时失效,导致大量请求绕过缓存直接访问数据库。

3. 缓存击穿会带来的问题

  1. 增加数据库负载:大量并发请求同时访问数据库,导致数据库性能下降,甚至崩溃。

  2. 响应时间延长:绕过缓存直接访问数据库,数据库响应时间增加,造成请求的响应时间延长。

4. 解决缓存击穿问题可以采取的方法 

  1. 加锁或互斥机制:在缓存失效时,只允许一个请求访问数据库,并将结果缓存,其他请求等待并从缓存中获取数据。

  2. 热点数据永远不过期:对于热点数据,可以将其缓存时间设置为永不过期,或者设置一个合理的较长过期时间,确保不会频繁去访问数据库。

  3. 异步更新缓存:当某个热点数据的缓存过期时,可以使用异步任务来更新缓存,先返回旧的缓存结果给请求,然后在后台异步更新缓存。

  4. 限流和降级:对于突发的大量请求,可以采取限流策略,限制并发访问的请求数量,或者通过降级策略返回预设的默认值,避免数据库负载过大。

  5. 前置缓存:在缓存层之前添加一个前置缓存(如CDN等),将请求分摊到多个缓存节点,减轻热点数据的单一缓存节点压力。

5.总结

综上所述,缓存击穿是一种常见的缓存问题,通过合理的缓存策略、并发控制和异步更新缓存等手段可以有效避免和应对缓存击穿问题,提高系统的性能和稳定性。 

三、缓存雪崩

1.什么是缓存雪崩

缓存雪崩是指在使用缓存系统时,大量缓存失效或过期,导致原本应该由缓存提供的数据,都需要从数据库中重新加载,从而引发数据库压力剧增、性能下降,甚至系统崩溃的现象。

2.常见的缓存雪崩情况

  1. 缓存批量失效:多个缓存键的过期时间或失效时间几乎同时到达,导致大量缓存同时失效。

  2. 重启或故障:缓存系统出现重启、宕机或故障,导致缓存中的所有数据一时无法访问,请求直接访问数据库。

  3. 数据库压力:当缓存失效后,大量请求同时涌入数据库,因为数据库无法承受如此大的压力而导致性能下降。

3. 缓存雪崩会带来的问题

  1. 数据库压力过大:大量请求直接访问数据库,导致数据库处理能力不足,出现性能问题,甚至引发数据库崩溃。

  2. 响应时间延长:由于缓存失效,请求需要直接访问数据库,导致响应时间延长。

4. 解决缓存雪崩问题可以采取的方法

  1. 设置随机过期时间:为了避免大量缓存同时失效,可以为不同的缓存设置稍有差异的过期时间,分散缓存过期的可能性。

  2. 二级缓存机制:使用多级缓存,将数据同时存储到多个缓存层,一级缓存失效时可以从二级缓存中获取数据,避免所有缓存同时失效。

  3. 并发重建缓存:在缓存失效的时候,通过加锁或者分布式锁的方式,只允许一个请求去加载数据并重新构建缓存,其他请求等待并从缓存中获取数据。

  4. 缓存预热:在系统低峰期,提前加载热门的缓存数据,避免在高峰期同时加载大量缓存数据。

  5. 容灾备份:设置多个缓存节点,保证缓存的高可用性,一旦某个缓存节点发生故障,可以快速切换到其他节点。

  6. 异步更新缓存:对于热点数据,可以使用异步任务来更新缓存,避免大量的请求同时涌入数据库。

5.总结

综上所述,缓存雪崩是一种常见的缓存问题,在系统设计和缓存策略上采取合理的措施可以有效预防和处理缓存雪崩,提高系统的可用性和稳定性。

四、Redis问题小结

Redis的缓存穿透、缓存击穿和缓存雪崩都是与缓存相关的常见问题,它们有一些共同点,并可以采用类似的解决方法:

1.共同点:

  1. 都会导致大量请求直接访问数据库,增加数据库负载和降低系统性能。
  2. 都与缓存失效或过期相关,导致缓存无法提供预期的数据。

2.解决方法:

  1. 设置合理的缓存策略:包括设置适当的缓存过期时间、根据业务情况决定是否使用永不过期的策略,避免缓存同时失效或过期导致的问题。

  2. 使用布隆过滤器(Bloom Filter):在查询前使用布隆过滤器快速判断查询的数据是否存在,避免无效的数据库查询操作。

  3. 多级缓存机制:使用多级缓存,将数据同时存储到多个缓存层,一级缓存失效时可以从其他级别的缓存获取数据,避免所有缓存同时失效。

  4. 并发控制机制:通过加锁或互斥机制控制并发访问数据库的请求数量,防止缓存失效时大量请求同时涌入数据库。

  5. 异步更新缓存:针对热点数据,使用异步任务来

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_48595067/article/details/131710868

智能推荐

leetcode 172. 阶乘后的零-程序员宅基地

文章浏览阅读63次。题目给定一个整数 n,返回 n! 结果尾数中零的数量。解题思路每个0都是由2 * 5得来的,相当于要求n!分解成质因子后2 * 5的数目,由于n中2的数目肯定是要大于5的数目,所以我们只需要求出n!中5的数目。C++代码class Solution {public: int trailingZeroes(int n) { ...

Day15-【Java SE进阶】IO流(一):File、IO流概述、File文件对象的创建、字节输入输出流FileInputStream FileoutputStream、释放资源。_outputstream释放-程序员宅基地

文章浏览阅读992次,点赞27次,收藏15次。UTF-8是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。文件字节输入流:每次读取多个字节到字节数组中去,返回读取的字节数量,读取完毕会返回-1。注意1:字符编码时使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码。定义一个与文件一样大的字节数组,一次性读取完文件的全部字节。UTF-8字符集:汉字占3个字节,英文、数字占1个字节。GBK字符集:汉字占2个字节,英文、数字占1个字节。GBK规定:汉字的第一个字节的第一位必须是1。_outputstream释放

jeecgboot重新登录_jeecg 登录自动退出-程序员宅基地

文章浏览阅读1.8k次,点赞3次,收藏3次。解决jeecgboot每次登录进去都会弹出请重新登录问题,在utils文件下找到request.js文件注释这段代码即可_jeecg 登录自动退出

数据中心供配电系统负荷计算实例分析-程序员宅基地

文章浏览阅读3.4k次。我国目前普遍采用需要系数法和二项式系数法确定用电设备的负荷,其中需要系数法是国际上普遍采用的确定计算负荷的方法,最为简便;而二项式系数法在确定设备台数较少且各台设备容量差..._数据中心用电负荷统计变压器

HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板_网页设计成品百度网盘-程序员宅基地

文章浏览阅读7k次,点赞4次,收藏46次。HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业_网页设计成品百度网盘

【Jailhouse 文章】Look Mum, no VM Exits_jailhouse sr-iov-程序员宅基地

文章浏览阅读392次。jailhouse 文章翻译,Look Mum, no VM Exits!_jailhouse sr-iov

随便推点

chatgpt赋能python:Python怎么删除文件中的某一行_python 删除文件特定几行-程序员宅基地

文章浏览阅读751次。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。AI职场汇报智能办公文案写作效率提升教程 专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。_python 删除文件特定几行

Java过滤特殊字符的正则表达式_java正则表达式过滤特殊字符-程序员宅基地

文章浏览阅读2.1k次。【代码】Java过滤特殊字符的正则表达式。_java正则表达式过滤特殊字符

CSS中设置背景的7个属性及简写background注意点_background设置背景图片-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏17次。css中背景的设置至关重要,也是一个难点,因为属性众多,对应的属性值也比较多,这里详细的列举了背景相关的7个属性及对应的属性值,并附上演示代码,后期要用的话,可以随时查看,那我们坐稳开车了······1: background-color 设置背景颜色2:background-image来设置背景图片- 语法:background-image:url(相对路径);-可以同时为一个元素指定背景颜色和背景图片,这样背景颜色将会作为背景图片的底色,一般情况下设置背景..._background设置背景图片

Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏8次。Win10 安装系统跳过创建用户,直接启用 Administrator_windows10msoobe进程

PyCharm2021安装教程-程序员宅基地

文章浏览阅读10w+次,点赞653次,收藏3k次。Windows安装pycharm教程新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入下载安装PyCharm1、进入官网PyCharm的下载地址:http://www.jetbrains.com/pycharm/downl_pycharm2021

《跨境电商——速卖通搜索排名规则解析与SEO技术》一一1.1 初识速卖通的搜索引擎...-程序员宅基地

文章浏览阅读835次。本节书摘来自异步社区出版社《跨境电商——速卖通搜索排名规则解析与SEO技术》一书中的第1章,第1.1节,作者: 冯晓宁,更多章节内容可以访问云栖社区“异步社区”公众号查看。1.1 初识速卖通的搜索引擎1.1.1 初识速卖通搜索作为速卖通卖家都应该知道,速卖通经常被视为“国际版的淘宝”。那么请想一下,普通消费者在淘宝网上购买商品的时候,他的行为应该..._跨境电商 速卖通搜索排名规则解析与seo技术 pdf

推荐文章

热门文章

相关标签