缓存穿透、缓存击穿与缓存雪崩
缓存穿透、缓存击穿与缓存雪崩
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同时失效,缓存过期时间重复率降低
相关文章:
缓存穿透、缓存击穿与缓存雪崩
缓存穿透、缓存击穿与缓存雪崩 1.本质区别 缓存穿透指的是数据库不存在数据,导致无法缓存,每次查询都查数据库,数据库压垮 缓存击穿指的是缓存键值对key过期了,key过期期间,大量请求访问,不经过缓存&…...
一周学会Django5 Python Web开发-项目配置settings.py文件-模版配置
锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计17条视频,包括:2024版 Django5 Python we…...
CF1845 D. Rating System [思维题+数形结合]
传送门:CF [前题提要]:自己在做这道题的时候思路完全想错方向,导致怎么做都做不出来,看了题解之后感觉数形结合的思考方式挺好的(或者这种做法挺典的),故写篇题解记录一下 题目很简单,不再解释.先不考虑 k k k,想想是一种什么情况?很显然应该是跟下图一样是一个折线图的变化.…...
HeidiSQL安装配置(基于小皮面板(phpstudy))连接MySQL
下载资源 对于这款图形化工具,博主建议通过小皮面板(phpstudy)来下载即可,也是防止你下载到钓鱼软件,小皮面板(phpstudy)如果你不懂是什么,请看下面链接这篇博客 第二篇:…...
【蓝桥2013】错误票据
错误票据 题目描述 某涉密单位下发了某种票据,并要在年终全部收回。 每张票据有唯一的 ID 号。全年所有票据的 ID 号是连续的,但 ID 的开始数码是随机选定的。 因为工作人员疏忽,在录入 ID 号的时候发生了一处错误,造成了某个…...
nvm对node版本进行管理及疑难解决,vue项目搭建与启动
一、nvm安装与node版本管理 nvm安装 1、nvm地址:https://github.com/coreybutler/nvm-windows/releases 2、无需配置安装包,nvm-setup-v1.1.10.zip 解压后双击nvm-setup.exe,选择安装路径,一路next即可 打开dos窗口输入nvm vers…...
Redisson分布式锁 原理 + 运用 记录
Redisson 分布式锁 简单入门 pom <dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.6</version></dependency>配置类 package com.hmdp.config;import org.redisson.Redisson;…...
Spring Boot 笔记 021 项目部署
1.1 引入坐标,并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port7777 2.1.2 环境变量更新(略) 2.1.3 外部配置文件,…...
新技术革命开始了,Sora一出,所有的视频人、电影人都下岗
Sora一出,所有的视频人、电影人都下岗! Sora直接用文本制作长达60秒的视频长镜头,也就是说,将来,只需要输入分镜脚本,电影就可以制作出来,不再需要几十人几百人声势浩大地去“拍”了,…...
【FPGA开发】Modelsim和Vivado的使用
本篇文章包含的内容 一、FPGA工程文件结构二、Modelsim的使用三、Vivado的使用3.1 建立工程3.2 分析 RTL ANALYSIS3.2.1 .xdc约束(Constraints)文件的产生 3.3 综合 SYNTHESIS3.4 执行 IMPLEMENTATION3.5 烧录程序3.6 程序固化3.6.1 SPI约束3.6.2 .bin文…...
现代浏览器对 es模块 【esm】原生支持
现代浏览器对 ES(ECMAScript)模块的原生支持是指浏览器可以直接解析和执行 JavaScript 文件中的 ES 模块语法,无需额外的工具或转换。 具体来说,当浏览器遇到 import 和 export 关键字时,会将其识别为 ES 模块语法&…...
修改SpringBoot中默认依赖版本
例如SpringBoot2.7.2中ElasticSearch版本是7.17.4 我希望把它变成7.6.1...
网络安全最典型基础靶场-DVWA-本地搭建与初始化
写在前面: 之前也打过这个 DVWA 靶场,但是是在虚拟机环境下的一个小块分区靶场; 本篇博客主要介绍在本地搭建 DVWA 靶场以及靶场的初始化,后续会陆续更新通关教程。 由于我们是在本地搭建,则需要基于你已经装好 phpstu…...
算法-----高精度2(高精度乘法,高精度除法,高精度斐波那锲数列)
高精度乘法 对于高精度乘法来说似乎不像高精度加减法那样简单了,我们似乎得一个一个加了,因为我们都知道 abaaaaa…a(b个a)。如果真要这要的话那1e9*1e9不得超时啊,所以不能这样,我们还是得从乘法竖式入手 这样看似乎看不出来什…...
windows vs 自己编译源码 leveldb 然后使用自己编译的文件
1 准备源码文件 1.1 第一种方法 git下载源码 vs项目中git leveldb源码和git third_party googletest-CSDN博客 1.2 第二种方法 手动下载 然后把第三方的源码下载 复制到 third_party 对应的文件夹中 没有文件夹 third_party -> powershell mkdir third_party 2 编译lev…...
基于GPT一键完成数据分析全流程的AI Agent: Streamline Analyst
大型语言模型(LLM)的兴起不仅为获取知识和解决问题开辟了新的可能性,而且催生了一些新型智能系统,例如旨在辅助用户完成特定任务的AI Copilot以及旨在自动化和自主执行复杂任务的AI Agent,使得编程、创作等任务变得高效…...
C语言-----习题
1.通过这个例题,我们可以知道*p.a是无法打印99的,因为.的优先级比解引用*高; struct S {int a;int b; }; int main() {struct S a, * p &a;//可以分为两部分理解//struct S a;//struct S *p &a;a.a 99;printf("%d\n"…...
Java学习笔记(五)
目录 一、控制结构 1.1 顺序控制 1.2 分支控制 (一)单分支 (二)双分支 (三)多分支 (四)嵌套分支 (五)switch分支 1.3 循环控制 (一&…...
4.【Linux】进程控制(进程终止||进程等待||程序替换)
一.进程创建fork 见上篇文章 二.进程的终止 1.进程退出场景 1.代码运行完毕,结果正确,通过main函数退出码返回一般为0。 2.代码运行完毕,结果不正确,通过不同的退出码标识不同的错误原因。 3.代码异常终止(信号&am…...
微服务设计:Spring Cloud 链路追踪概述
Spring Cloud 链路追踪是指在分布式系统中追踪请求路径的技术。它可以帮助开发者了解请求在各个微服务之间是如何流转的,以及每个微服务处理请求所花费的时间。链路追踪可以用于解决以下问题: 性能分析: 识别性能瓶颈,优化微服务性能。故障排…...
使用Python轻松管理Word页脚
在日常的办公自动化中,处理Word文档是许多人绕不开的环节。无论是生成报告、合同,还是制作项目文档,Word都是一个不可或缺的工具。然而,当文档数量庞大,或者需要频繁更新时,那些看似简单的重复性任务&#…...
douyin-downloader:抖音音频高效提取全攻略
douyin-downloader:抖音音频高效提取全攻略 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批…...
5块钱的国产RISC-V芯片CH32V103能干啥?我用它复刻了一个STM32F103的小项目
5元国产RISC-V芯片实战:用CH32V103复刻STM32经典项目 在电子DIY领域,成本始终是创客们无法回避的现实问题。当我在某电商平台发现CH32V103这颗标价仅5元的RISC-V芯片时,第一反应是怀疑它的实用性——毕竟同级别的STM32F103C8T6价格通常在15-2…...
从零部署到实战标注:SUSTechPOINTS 3D点云标注平台全流程指南
1. 为什么选择SUSTechPOINTS进行3D点云标注 在自动驾驶研发过程中,3D点云标注是个绕不开的苦差事。我最早用过不少商业标注工具,不是价格贵得离谱,就是功能残缺不全。直到去年团队接手一个校企合作项目,才发现南方科技大学开源的这…...
S2-Pro+C语言教学系统:代码逻辑讲解与典型错误自动纠正
S2-ProC语言教学系统:代码逻辑讲解与典型错误自动纠正 1. 智能编程助教初体验 第一次看到S2-Pro在C语言教学中的应用效果时,确实让人眼前一亮。想象一下,当学生提交一段指针运算代码后,系统不仅能指出错误,还能像经验…...
SGMICRO圣邦微 SGM8740YC5G/TR SC70-5 比较器
特性 快速,45纳秒传播延迟(10毫伏过驱动)低功耗:在Vs3V时为155pA(典型值) 宽电源电压范围:2.7V至5.5V优化适用于3V和5V应用轨到轨输入电压范围低偏置电压:0.9mV(典型值)内部迟滞以实现干净开关 输出摆幅:在4mA输出电流下,从轨距内.200mV范围内 与CMOS/TT…...
cv2.findContours()错误的解决办法ValueError: not enough values to unpack (expected 3, got 2)
方法一:直接去掉一个返回值就即可。 方法二:把OpenCV 安装3.X的版本 具体原因 2、解析差异: OpenCV2和OpenCV4中: findContours这个轮廓提取函数会返回两个值:①轮廓的点集(contours)②各层轮廓的索引(hierarchy) 返回…...
3D打印雕塑与玻璃钢雕塑的区别、工艺详解及定制雕塑相关疑问解答
3D打印雕塑与玻璃钢雕塑的区别、工艺详解及定制雕塑相关疑问解答3D打印雕塑与玻璃钢雕塑是当代主流雕塑工艺,核心差异在于成型逻辑与材料特性:3D打印以数字化建模为核心,遵循“分层叠加”的增材逻辑;玻璃钢以复合材料为基础&#…...
AI排忧解难:让快马智能诊断并解决你的openclaw安装故障
最近在折腾openclaw这个工具时,遇到了不少安装上的坑。从依赖冲突到环境配置错误,每次报错都得花大把时间查资料。后来发现用AI辅助诊断的思路可以大幅提升效率,于是尝试在InsCode(快马)平台上做了个智能诊断脚本,效果意外地好。 …...
7个高效步骤:Meshroom开源三维重建工具从入门到精通
7个高效步骤:Meshroom开源三维重建工具从入门到精通 【免费下载链接】Meshroom 3D Reconstruction Software 项目地址: https://gitcode.com/gh_mirrors/me/Meshroom 技术原理:三维重建的底层逻辑与技术选型 摄影测量技术的数学基础 三维重建技…...
