Redis缓存穿透、缓存击穿、缓存雪崩介绍

a0ffc9dbc8df4aac845295133d224585.gif一、Redis的缓存穿透

 

1.什么是缓存穿透?

缓存穿透是指:客户端请求的数据在缓存中和数据库中都不存在,这时缓存就永远不会生效,这些请求都打到数据库从而导致数据库压力过大。

 

2.出现缓存穿透的解决方案,以下是常用的两种:

(1)做缓存空对象:

如果一个查询返回的数据为空(不管是数据是否不存在),我们仍然把这个空结果(null)进行缓存,设置空结果的过期时间会很短,最长不超过五分钟。

缓存空对象的优缺点:

优点:实现简单,维护方便

缺点:额外的内存消耗,以及可能造成短期的数据不一致。(如果在做了空缓存之后,我们向数据库中插入了新的数据,而插入的数据正好是之前做了空缓存的数据,此时就会出现短期数据不一致的问题)

(2)使用布隆过滤器:

布隆过滤器(Bloom Filter),它实际上是一个很长的二进制向量(位图)和一系列的随机映射函数(哈希函数),它可以用于检索一个元素是否存在一个集合中,他的优点是空间的查询效率和查询时间都远远超过一般算法,缺点是有一定的误识别率和删除比较困难。

如下是加入布隆过滤器的一个实现流程

使用布隆过滤器的优缺点:

优点:内存占用少,没有多余的key

缺点:实现的过程比较复杂,并且存在误判的可能

 

二、缓存击穿

1.什么是缓存击穿

** 缓存击穿也叫热点key问题,就是一个被高并发访问并且缓存业务重构复杂的key突然失效了,无数的请求会在瞬间给数据库带来巨大的冲击。**

当缓存的热点key过期后,一个线程来请求数据,查询缓存未命中,然后从数据库中查询然后重新构建缓存数据(需要一定的时间),在缓存数据还没构建完成此时又有大量请求进来去查询数据,缓存中未命中数据,于是后面进来的请求也同步之前请求从数据库中查询数据并构建缓存的这一过程,此时这些请求全部打到数据库中,导致数据库压力变大。

大致如下图:

 

 

 

2.出现缓存击穿的结局方案:

 

即一个线程得到锁去更新数据的时候,其他线程进来去查询数据的时候需要先去获取锁才能去查询数据库来更新缓存。此时因为已经有线程去更新缓存了,故在多次查询后就可命中缓存中的数据。

(2)设置逻辑过期:

 

 

 

对比以上两种方案优缺点如下:

互斥锁

优点:

 

没有额外的内存开销

保证了一致性

实现简单

缺点

 

线程需要等待

可能会有死锁的风险

逻辑过期:

优点:

 

线程无需等待,性能较好

缺点:

 

不保证一致性

有额外的内存消耗

实现比较复杂

三、缓存雪崩

1.什么是缓存雪崩:

缓存雪崩是指:在同一时间段大量的缓存key失效或者Redis宕机,这时候大量的请求向数据库请求信息,此时可能就会把数据库压垮。

过程大致如下:

 

 

 

 

 

 

 

出现缓存雪崩的解决方案常用的有如下:

(1)给不同的key的TTL设置随机值

(2)利用Redis集群提高服务的可用性

(3) 给缓存业务添加限流降级的策略

(4)给业务添加多级缓存

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从AMI镜像恢复AWS Amazon Linux 2实例碰到的VNC服务以及Chrome浏览器无法启动的问题

文章目录 小结问题及解决VNC服务无法启动Chrome浏览器无法启动 参考 小结 将Amazon Linux 2保存为AMI (Amazon Machine Images)后,恢复成EC2 Instance (实例)后,VNC服务以及Chrome浏览器无法启动,进行了解决。 问题及解决 如果要将一个EC2…

Redis分布式缓存之主从哨兵分片集群

Redis主从 数据同步原理 Redis哨兵 Redis分片集群 集群伸缩:在集群中插入或删除某个节点 集群故障转移

HubSpot到底好不好用?

HubSpot被认为是一款强大的综合营销平台,然而,其是否适合你的业务取决于多种因素。以下是一些关于HubSpot的优点和考虑因素: HubSpot的优点: 一体化平台: HubSpot集成了营销、销售和服务功能,使得企业可以…

excel统计分析——CVM正态性检验

参考资料:统计推断——正态性检验(图形方法、偏度和峰度、统计(拟合优度)检验)_sm.distributions.ecdf-CSDN博客 29_张达成_从经验过程出发建立 Cramer-von Mises 统计量的性质 - 豆丁网 https://cran.r-project.org…

LeetCode 每日一题 Day 24(Hard) ||dp动态规划

1349. 参加考试的最大学生数 给你一个 m * n 的矩阵 seats 表示教室中的座位分布。如果座位是坏的(不可用),就用 ‘#’ 表示;否则,用 ‘.’ 表示。 学生可以看到左侧、右侧、左上、右上这四个方向上紧邻他的学生的答…

解析d3dx9_43.dll文件,有效修复d3dx9_43.dll文件丢失

最近有小伙伴给小编反映说他的电脑老是出现d3dx9_43.dll文件丢失的问题,问为啥会这样?要怎么解决?那么今天小编就来给大家详细的解析这个d3dx9_43.dll文件吧,同时教大家如何去进行修复。 一. d3dx11_43.dll是什么文件有啥用 1.d3…

【数据库系统概论】第3章-关系数据库标准语言SQL(3)

文章目录 3.5 数据更新3.5.1 插入数据3.5.2 修改数据3.5.3 删除数据 3.6 空值的处理3.7 视图3.7.1 建立视图3.7.2 查询视图3.7.3 更新视图3.7.4 视图的作用 3.5 数据更新 3.5.1 插入数据 注意:插入数据时要满足表或者列的约束条件,否则插入失败&#x…

SpringBoot整合jwt(小白入门)

本文项目所用版本为: https://blog.csdn.net/weixin_39570751/article/details/133386557 代码仓库: https://gitee.com/skyblue0678/springboot-demo 目录 什么是JWT JWT依赖 写一个jwt工具类 测试一下jwt 优化:将过期时间配置在文件中 答疑&…

mysql根据条件修改字段

数据 sql语句 根据field2 字段情况,修改field1字段 update t1 tt1 set tt1.field1 ( case when tt1.field2 in (我家2) then 1111 when tt1.field2 in (你的家11) then 2222 else tt1.field2 end )结果

ros2+python,报错:`GLIBCXX_3.4.30‘ not found

在执行代码import rclpy,出现如下图所示报错 如报错信息所示,/home/shui/miniconda3/envs/ros2/bin/…/lib/libstdc.so.6中没有找到GLIBCXX_3.4.30’ 检查/home/shui/miniconda3/envs/ros2/bin/…/lib/的libstdc.so.6文件 cd /home/shui/miniconda3/e…

7. Resource database in UVM(UVM的资源数据库)

UVM集中资源数据库用于存储可配置(configurable)对象/object、变量/variables、虚拟接口/virtual interfaces、队列/queues、类句柄/class handles等,并从数据库中检索它们。这种可配置的测试平台为验证工程师提供了一定程度的自由度&#xf…

sqlmap各个命令的解释及其基本用法

各个命令的用法 -h,--help Show basic help message and exit(显示基本帮助消息并退出) -hh Show advanced help message and exit(显示高级帮助信息并退出) --version Show programs version number and exit(显示程序的版本…

【Vue UI组件库】

Vue UI组件库 1 移动端常用UI组件库2 PC端常用UI组件库2.1 Element UI 1 移动端常用UI组件库 Vant:https://youzan.github.io/vantCube UI:https://didi.github.io/cube-uiMint UI:http://mint-ui.github.io 2 PC端常用UI组件库 Element U…

带你学C语言~指针(3)

目录 ✍0.前言 🚀1.字符指针变量 🚅2.数组指针变量 🐱‍🏍2.1.数组指针变量是什么 🐱‍🏍2.2数组指针变量怎么初始化 🚢3.二维数组传参的本质 🚀4.函数指针变量 ✈4.1函数指…

Ubuntu-22.04编译安装FLTK

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、FLTK是什么?二、下载源代码三、准备编译环境四、编译五、运行测试程序六、Demo总结 前言 最近在研究FLTK,突然对它感了兴趣&#x…

猫粮选择困难?5款性价比高的主食冻干品牌推荐

近年来,冻干猫粮作为热门的高品质猫粮,受到了许多追求纯天然、健康食品的铲屎官的关注。萌新铲屎官就很疑惑了冻干猫粮可以代替猫粮作为主食吗?冻干猫粮真就那么好吗? 那么今天作为一个宠物店店长,跟大家一起聊聊各种…

UG模型的显示与隐藏

在UG中,除了通过图层的方式控制模型的显示与隐藏外,还可以直接通过显示与隐藏命令,位置在菜单-编辑-显示与隐藏,需要注意的是这些命令只能对可视图层中的模型进行控制 显示与隐藏:ctrl w 可以通过模型的类别&#xf…

系统架构设计师笔记

第1章计算机组成与体系结构 1.1.1计算机硬件的组成 (1)控制器。控制器是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令。控制器的组成包含如下。 ①程序计数器PC:存储下…

忻府区政协主席郭新和带队视察洁晋发电环保教育基地中国流动科技博物馆展厅

忻府区政协主席郭新和带队视察洁晋发电环保教育基地中国流动科技博物馆展厅 2023年12月5日,忻府区政协主席郭新和带队视察中国流动科技博物馆展览情况。 郭新和一行来到位于忻州市洁晋发电有限公司环保教育基地的中国流动科技馆忻府区展厅。展厅内配备了科普知识展…