缓存雪崩、缓存击穿、缓存穿透
缓存雪崩
当缓存中大量的键值对同时过期或者Redis宕机了,大量的请求就会直接打到数据库,这种现象就是缓存雪崩
应对策略
有四种,分别是“均匀设置过期时间”、“互斥锁”、“双key策略”、“设置逻辑过期时间,异步更新缓存”
- 均匀设置过期时间
可以在设置过期时间的时候,给时间加上随机数,防止大量数据同时过期
- 互斥锁
发现无法命中缓存后,加上一个互斥锁,保证同于时间只有一个请求来构建缓存,其它没有获取到互斥锁的请求就会被阻塞。另外,最好给互斥锁加上超时时间,这样如果获取到锁的的请求由于某种意外一直不释放锁,就会让其它请求一直阻塞,整个系统就会出现无响应的状态。当然,加了锁就会影响并发量。
- 双key策略
主key设置过期时间,备key不设置过期时间。当发现主key失效时,直接返回备key。
- 设置逻辑过期时间,异步更新缓存
如果对缓存的一致性要求不高,那么可以不给键值对设置过期时间,而是设置一个逻辑过期时间。一个线程查询缓存发现逻辑过期时间已过期,获得互斥锁,接着会创建新的线程进行数据库查询与缓存重建以及逻辑过期时间的更新,在释放互斥锁之前,其它线程查询缓存未命中时,获取互斥锁失败后会直接返回过期数据。
- 构建缓存高可用集群(针对Redis宕机)
- 服务熔断或者请求限流(针对Redis宕机)
服务熔断是说,Redis宕机后,直接拒绝缓存服务,也不会去访问数据库,直到redis重启之后,再运行业务对缓存进行访问。
请求限流是指Redis宕机后只允许发送少量请求到数据库,其余的请求都会被拒绝,直到Redis重启并把缓存预热完,再解除请求限流。
缓存击穿
缓存击穿是指某个热点key过期后,大量请求直接打到数据库,给数据库造成巨大压力
应对策略
和“缓存雪崩”类似,可以采用互斥锁或添加逻辑过期时间
缓存穿透
缓存雪崩和缓存击穿都可通过查询数据库进行缓存重构,但是缓存穿透就不一样了,它是缓存中没有数据,数据库中也没有数据。也就是没有办法进行缓存重构,很多请求会不断地打到数据库。
- 产生的两个原因
- 业务的误操作,把缓存和数据库中的数据都删除了
- 黑客恶意的攻击,故意访问一些不存在的数据
应对策略
- 对请求的参数进行校验判断,看看是否为非法参数,对恶意请求返回错误
- 缓存空值。当发现缓存和数据库都查询不到数据时,缓存一个空值,这样后面的请求访问这个数据时,就会直接返回一个空值,而不会打到数据库
- 使用布隆过滤器。
布隆过滤器可以判断一个数据是否存在于数据库当作。在进行业务操作的时候,如果缓存和布隆过滤器中都判断不存在这个数据,那么证明这个数据一定不存在于数据库,那么,就可以不用去数据库查找数据了。
- 原理:
我们每次往数据库写入数据时,计算该数据的N个哈希函数值,然后分别与布隆过滤器(一个位图数组)的长度取模,得到位图上的编号,接着,这N个编号上的值置为1,这样后面查询数据是否在布隆过滤器,就可以对数据同样求N个哈希值,看看N个编号上是否都是1,是则说明数据库可能存在,不是则说明数据库一定不存在这个数据。
对比
相关文章:
缓存雪崩、缓存击穿、缓存穿透
缓存雪崩 当缓存中大量的键值对同时过期或者Redis宕机了,大量的请求就会直接打到数据库,这种现象就是缓存雪崩 应对策略 有四种,分别是“均匀设置过期时间”、“互斥锁”、“双key策略”、“设置逻辑过期时间,异步更新缓存” …...
Bigemap如何查看历史影像
工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 很多人都在寻找历史影像图,这块的需求是非常大,历史影像一般可以用于历史地貌的变迁分析,还原以前的生态场景,对范围面积…...
如何离线安装和使用pymysql操作mysql数据库
一、应用背景 在企业内部网络要使用python操作mysql数据库。然而,python未自带访问MySQL数据库的函数库pymysql,需要另外安装。网上有很多安装pymysql都需要互联网支持。本文主要阐述如何离线安装pymysql,并简要介绍pymysql如何进行mysql操作。 pymysq…...
Prometheus-监控Mysql进阶用法(1)(安装配置)
阿丹: 在开发和生产环境中有可能会出现慢mysql等问题,那么这里就需要我们优秀的程序员来进行监控和解决,那么如何借助云原生的监控系统来完成这个操作呢? 环境描述: 使用一台空白的阿里云服务器2核4G。 服务器基本安装…...
网络安全(黑客技术)自学内容
前言 一、什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域,都有攻与防…...
linux centos7 安装mongodb7.0.1 及 mongosh2.0.1
下载数据库并解压 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-7.0.1.tgz tar -zxf mongodb-linux-x86_64-rhel70-7.0.1.tgz #移动到/usr/local/mongo目录 mv mongodb-linux-x86_64-rhel70-7.0.1 /usr/local/mongodbmongosh 命令行下载 #下载命令行…...
c++ | makefile | 编译 | 链接库
简单记一下 看着人家总结的挺好的 点这...
n个骰子掷出m点的概率,C++实现
一.在骰子游戏中,我们会有猜点数的问题。我们该如何用算法来描述呢? 加入我们当前只有一个骰子,我们该如何算概率呢? 我们现在开始推导一下吧: 首先是一个骰子的情况,我们可以简单的知道n个骰子一共可以掷出…...
【JUC系列-08】深入理解CyclicBarrier底层原理和基本使用
JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786【三】熟练掌握Atomic原子系列基本…...
企业专线成本高?贝锐蒲公英轻松实现财务系统远程访问
在办公及信息系统领域,许多企业纷纷采用金蝶等财务管理软件来提升运营效率。以某食品制造企业为例,该企业总部位于广州,并拥有湖北仙桃工厂、广州从化工厂和湖南平江工厂三大生产基地。为提高管理效率,该企业在广州总部局域网内部…...
自学——网络安全——黑客技术
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...
k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD
测试环境使用的jenkins 正式环境使用的gitlab-ci 测试环境 创建yaml文件 apiVersion: v1 kind: ConfigMap metadata:name: dtk-go-tiktok-admin-configlabels:app.kubernetes.io/name: dtk-go-tiktok-adminapp.kubernetes.io/business: infrastructureapp.kubernetes.io/run…...
【SpringBoot项目】SpringBoot+MyBatis+MySQL电脑商城
在b站听了袁老师的开发课,做了一点笔记。 01-项目环境搭建_哔哩哔哩_bilibili 基于springboot框架的电脑商城项目(一)_springboot商城项目_失重外太空.的博客-CSDN博客 项目环境搭建 1.项目分析 1.项目功能:登录、注册、热销…...
互联网医院|互联网医院系统引领医疗科技新风潮
互联网的迅速发展已经改变了人们的生活方式,而医疗领域也不例外。近年来,互联网医院应运而生,为患者和医生提供了更便捷、高效的医疗服务。本文将深入探讨互联网医院的系统特点、功能以及未来的发展方向,为您展现医疗行业的新时代…...
Mock安装及应用
1、安装 npm install mockjs 2、Mock.Random属性 该属性是一个工具类,用于生成各种随机数据。它提供的方法如下: Basic: boolean,natural,integer,float,character,string,range,date,time,datetime,now; Image: image,dataImage; Color: color; Text: p…...
一起来看看UI设计流程详解吧!通俗易懂
UI设计2023 通俗易懂的UI设计流程详解 首先,大家要明确一下范围:一般分为新产品的从0-1和已有产品上新的模块或功能的从0-1,这两个方向的环节和产出物会有比较大的区别。其实在UI设计师介入之前,我们是需要去了解一些大的方向和…...
TikTok营销成功秘籍:ROI指标的黄金法则
在当今数字营销领域,TikTok已经崭露头角,成为了品牌和营销者们争相追逐的热门平台。 然而,要在TikTok上取得成功,不仅需要创意和内容,还需要精确的ROI(投资回报率)指标来衡量和优化你的营销策略…...
17.适配器模式(Adapter)
意图:将一个类的接口转换为Client希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类在一起工作。 UML图 Target:定义Client使用的与特定领域相关的接口。 Client:与符合Target接口的对象协同工作。 Adaptee…...
leetcode做题笔记154. 寻找旋转排序数组中的最小值 II
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,4,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,4]若旋转 7 次࿰…...
什么是推挽电路?
推挽电路原理: 可以简单理解为推和拉; 此电路总共用到两个元器件,对应图中的Q1----NPN三极管,Q2----PNP三极管,两个电阻R1和R2起到限流的作用;两个三极管的中间对应信号的输出。 下面就举例说明是如何工作的…...
208.Flink(三):窗口的使用,处理函数的使用
目录 一、窗口 1.窗口的概念 2.窗口的分类 (1)按照驱动类型分 (2)按照窗口分配数据的规则分类 3.窗口api概览 (1)按键分区(Keyed)和非按键分区(Non-Keyed) *1)按键分区窗口(Keyed Windows) *2)非按键分区(Non-Keyed Windows) (2)代码中窗口API的调…...
时序预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测
时序预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现POA-CNN-BiLSTM鹈鹕算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-BiLSTM鹈鹕算…...
【知识点】增量学习、在线学习、离线学习的区别
参考链接:https://www.6aiq.com/article/1613258706447?p1&m0 离线学习 常见的学习方式,一次性将所有数据参与进训练。 离线学习完成了目标函数的优化将不会在改变了离线学习需要一次提供整个训练集时间和空间成本效率低发生数据变更或模型漂移需…...
c++ 学习 之 运算符重载 之 前置++和后置++
前言 int a1;cout << (a) << endl;cout << a << endl;int b1;cout << (b) << endl; // 这个是错误的cout << b << endl;上面样例中, 前置 返回的是引用,所以a 的值变成了3 后置 返回的不是可以改变的…...
K8s Kubelet 垃圾回收机制
前言 Kubelet 垃圾回收(Garbage Collection)是一个非常有用的功能,它负责自动清理节点上的无用镜像和容器。Kubelet 每隔 1 分钟进行一次容器清理,每隔 5 分钟进行一次镜像清理(截止到 v1.15 版本,垃圾回收间隔时间还都是在源码中固化的,不可自定义配置)。如果节点上已…...
docker安装高斯数据库openGauss数据库
1.创建容器 #创建数据没有挂在的容器 docker run --name opengauss --privilegedtrue -d -e GS_PASSWORDEnmo123 -p 8090:5432 enmotech/opengauss:latest 2. 进入容器,并切换omm用户,使用gsql连接高斯数据库 [rootansible ~]# docker ps -a CONTAIN…...
新手学习:ArcGIS 提取SHP 路网数据、节点
新手学习:ArcGIS 提取SHP 路网数据、节点 参考连接 OSM路网提取道路节点 ArcGIS:如何创建地理数据库、创建要素类数据集、导入要素类、表? 1. 导入开源路网SHP文件 2. 在交点处打断路网数据 未打断路网数据 有一些路径很长,…...
性能测试 —— Tomcat监控与调优:Jconsole监控
JConsole的图形用户界面是一个符合Java管理扩展(JMX)规范的监测工具,JConsole使用Java虚拟机(Java VM),提供在Java平台上运行的应用程序的性能和资源消耗的信息。在Java平台,标准版(Java SE平台)6,JConsole的已经更新到目前的外观…...
刷题笔记26——图论二分图判定
世界上的事情,最忌讳的就是个十全十美,你看那天上的月亮,一旦圆满了,马上就要亏厌;树上的果子,一旦熟透了,马上就要坠落。凡事总要稍留欠缺,才能持恒。 ——莫言 visited数组是在如果有环的情况下,防止在图中一直绕圈设置的,类似于剪枝操作,走…...
网站整站优化-网站整站优化工具
您是否曾为您的网站在搜索引擎中的排名而感到焦虑?是否苦苦思考如何提高流量、吸引更多用户? 什么是整站优化。简而言之,它是一项用于提升网站在搜索引擎中排名的策略和技巧。通过对网站的内容、结构、速度等方面进行优化,可以使…...
网站架构的优化/百度公司电话是多少
poolboy是Erlang中运用非常广泛的进程池库,它有很多优点,使用简单,在很多项目中都能看到它的身影。不过,它也有一些坑,使用时候需要注意。(本文对poolboy的分析基于1.5.1版本) worker创建不能失…...
小程序转换成网页/seo是搜索引擎优化
问题:谋农场饲养的某种动物所能达到的最大年龄为15岁,将其分为三个年龄组:第一组0~5岁;第二组6~10岁;第三组11~15岁。动物从第二个年龄组开始繁殖后代,第二个年龄组的动物…...
网站页面静态化方案/seo排名优化技术
题目要求第n个丑数。所以对于中间结果不须要保存。def Humble(index):curHum 1M2 2; M3 3; M5 5while index > 1:curHum min(min(M2, M3), M5)while M2 < curHum:M2 * 2while M3 < curHum:M3 * 3while M5 < curHum:M5 * 5index - 1return curHum转载于:https:…...
asp.net做动态网站/成都seo优化
进来看了看keras, 比tf友好的多啊,总结下: Keras有两种类型的模型,顺序模型(Sequential)和泛型模型(Model) 首先比较简单的顺序型 Sequential模型接口 代码示例 model Sequential() model.a…...
在wordpress首页显示赞踩功能/电脑培训零基础培训班
微服务,为了更好的创建项目组织结构、更高效的项目的迭代效果、更优良的架构设计,就需要使用微服务的架构思想,来对项目进行搭建或者重构。第一个问题:服务如何进行拆分?根据业务边界来划分,拆分开来后每一个服务就是…...
wordpress万篇文章/电脑培训学校能学什么
Zabbix 基于SNMP监控1、介绍SNMP:简单网络管理协议;(非常古老的协议)三种通信方式:读(get, getnext)、写(set)、trap(陷阱);端口&…...