缓存穿透、缓存击穿与缓存雪崩

缓存穿透、缓存击穿与缓存雪崩

1.本质区别

缓存穿透指的是数据库不存在数据,导致无法缓存,每次查询都查数据库,数据库压垮

缓存击穿指的是缓存键值对key过期了,key过期期间,大量请求访问,不经过缓存,直接请求数据库,数据库压垮

缓存雪崩指的是key同时过期,请求不经缓存全部到数据库,数据库压垮

2.根据各自特点解决方案

缓存穿透

1.查询为null,将null缓存,key过期时间设置短一些,主要防止恶性攻击

2.redisson实现的布隆过滤器,底层bitmap,里面存的是二进制0和1,。开始都是0,一个数据存储,key经过3次hash运算模于数组,找到数组对应索引将0改为1,这样3个数组位置就能表名一个key是存在的,即键值对数据存在。但存在误判(C不存在,hash运算取模,1个值属于A,2个值数据B,A与B均存在,三个数组位置都是1,会误判C存在),概率不超过5%

缓存击穿

1.使用互斥锁,如redis的setnx设置互斥锁,缓存失效,不立即去数据库查询,先去强锁,哪个线程获得,去数据库查询,获取不到就等待重试查询缓存,这种办法数据强一致性,但性能低,而且可能会死锁。

2.key设置逻辑过期非实际物理过期,设置key的时候,设计一个过期时间字段一起存入缓存中,而不给key设置过期时间。查询的时候,从redis中取出判断时间是否过期,如果过期开通另一线程进行数据同步,当前线程正常返回数据(返回的是旧数据),这种办法性能高,但是无法做到数据强一致性

缓存雪崩

解决方案将原有失效时间上随机加上随机值,比如1-5分钟随机,这样就不会同一时刻大量的key同时失效,缓存过期时间重复率降低

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

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

相关文章

ONLYOFFICE桌面编辑器8.0新特性:PDF表单、RTL支持、Moodle集成、本地界面主题等

ONLYOFFICE是由领先的IT公司—Ascensio System SIA经验丰富的IT专家开发的项目。这是一款强大的在线编辑器,能够为提供高效的文本文档、电子表格、演示文稿、表单和 PDF 编辑工具。 继 ONLYOFFICE 文档 v8.0发布后,适用于 Linux、Windows 和 macOS 的免费…

C++中类的6个默认成员函数【构造函数】 【析构函数】

文章目录 前言构造函数构造函数的概念构造函数的特性 析构函数 前言 在学习C我们必须要掌握的6个默认成员函数,接下来本文讲解2个默认成员函数 构造函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是&#xff0c…

电商网站基础布局——以小兔鲜为例

项目准备 /* base.css */ /* 內减模式 */ * {margin: 0;padding: 0;box-sizing: border-box; }/* 设置网页统一的字体大小、行高、字体系列相关属性 */ body {font: 16px/1.5 "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","Hiragino Sans…

Codeforces Round 106 D. Coloring Brackets 【区间DP + 记忆化搜索实现】

D. Coloring Brackets 约定 ∣ S ∣ ≤ 700 |S| \leq 700 ∣S∣≤700 题意 给定一个正则括号序列 s s s,我们需要求出合法的染色方案数。合法的条件为: 每个符号要么不染色,要么染红色,要么染蓝色对于每对配对的括号&#xf…

(十八)springboot实战——spring securtity注解方式的授权流程源码解析

前言 在上一节内容中,我们介绍了如何在FilterSecurityInterceptor过滤器中处理用户的授权流程,并分析了其源码,spring security还提供了方法级别的授权方式,通过EnableMethodSecurity注解启用权限认证流程,只需要在方…

Ivanti Pulse Connect Secure VPN SSRF(CVE-2023-46805)漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

Failed to construct ‘RTCIceCandidate‘ sdpMid and sdpMLineIndex are both null

最近在搞webrtc,在编写函数处理远端传递来的candidate时报错了,具体信息如下。国内关于webrtc的资料很少,所以去国外社区转了一圈,回来记录一下报错的解决方案 其实这个bug也好解决,根据报错信息可以判断是RTCIceCand…

Java 学习和实践笔记(5)

三种类型的变量: Java中常量的定义: 下面的这个加号表示连接的意思,也就是把前面的字符串常量和后面的变量值在显示时连在一起: 显示效果如下: 如果没有用这个加号,就会报错:

微信小程序(四十)API的封装与调用

注释很详细,直接上代码 上一篇 新增内容: 1.在单独的js文件中写js接口 2.以注册为全局wx的方式调用接口 源码: utils/testAPI.js const testAPI{/*** * param {*} title */simpleToast(title提示){//可传参,默认为‘提示’wx.sho…

【FPGA】Verilog:奇偶校验位发生器 | 奇偶校验位校验器

目录 0x00 奇偶校验位发生器 0x01 奇偶校验位校验器 0x02 错误检测器和纠错器

第三百一十七回

文章目录 1. 概念介绍2. 实现方法2.1 hintText2.2 labelText2.3 controller 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中处理光标"相关的内容,本章回中将介绍如何添加输入框默认值.闲话休提,让我们一起Talk Flutter吧。 1.…

treeData 树结构数据处理(react)

1.什么是tree 树(tree)形结构是一种重要的非线性结构,依据分支关系定义的层次结构,在这种结构中,每个元素至多只有一个前趋,但可以有多个后继。 树的定义:树(Tree)是n(n 大于等于0)个节点的有限集合T,当n0…

常用工具类-Collections

常用工具类-Collections 排序操作查找操作填充操作判断集合是否有交集不可变集合 java.util.Collections类是一个工具类,它包含了一些静态方法,用于操作集合(如列表和映射)。这个类主要用于创建不可修改的集合、填充集合、替换元素…

C++模版(初阶)

🌈函数复用的两种不恰当方式 ☀️1.函数重载 以Swap函数为例,有多少种参数类型组合,就要重载多少个函数: void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left,…

材料非线性Matlab有限元编程:切线刚度法

导读:本文主要围绕材料非线性问题的有限元Matlab编程求解进行介绍,重点围绕牛顿-拉普森法(切线刚度法)、初应力法、初应变法等三种非线性迭代方法的算法原理展开讲解,最后利用Matlab对材料非线性问题有限元迭代求解算法进行实现,展示了实现求解的核心代码。这些内容都将收…

[word] word中怎么插入另外一个word文档 #媒体#职场发展

word中怎么插入另外一个word文档 word中怎么插入另外一个word文档?有有些小伙伴在制作文档的时候,可能需要用到多个文档进行配合制作,今天小Q来给大家演示一下,插入Word文档的方法,插入其他类型文档的方法也是一样的。…

【Java八股面试系列】JVM-class文件结构

Class文件结构总结 根据 Java 虚拟机规范,Class 文件通过 ClassFile 定义,有点类似 C 语言的结构体。我们之前都是使用javap命令来对字节码文件进行反编译查看的,我们可以使用WinHex软件(Mac平台可以使用010 Editor)来…

Java:JDK8新特性(Stream流)、File类、递归 --黑马笔记

一、JDK8新特性(Stream流) 接下来我们学习一个全新的知识,叫做Stream流(也叫Stream API)。它是从JDK8以后才有的一个新特性,是专业用于对集合或者数组进行便捷操作的。有多方便呢?我们用一个案…

【GO语言卵细胞级别教程】04.GO函数介绍

【GO语言卵细胞级别教程】04.GO函数介绍 目录: 【GO语言卵细胞级别教程】04.GO函数介绍0.创建项目1.函数的引入2.注意事项3.详细介绍3.1 形参介绍 0.创建项目 创建目录 执行命令加载模块 cd 02.gostudy目录下 1.进入目录下 cd 02.gostudy 2.初始化模块变量 go …

LabVIEW伺服阀性能参数测试

LabVIEW伺服阀性能参数测试 伺服阀作为电液伺服系统中的核心元件,其性能参数的准确测试对保证系统整体性能至关重要。开发了一种基于LabVIEW软件开发的伺服阀性能参数测试系统,提高测试的自动化程度和精确性,同时降低操作复杂度和成本。 传…