真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
💗推荐阅读文章💗
- 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》
- 🌺MySQL系列🌺👉2️⃣《MySQL系列教程》
- 🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》
- 🌻SSM框架系列🌻👉4️⃣《SSM框架系列教程》
文章目录
- 四、缓存解决方案
- 4.1 缓存穿透
- 4.1.1 现象:
- 4.1.2 方案:
- 4.2 缓存击穿
- 4.2.1 现象:
- 4.2.2 方案:
- 4.3 缓存雪崩
- 4.3.1 现象:
- 4.3.2 方案:
四、缓存解决方案
4.1 缓存穿透
4.1.1 现象:
指大量请求来到数据库查询都没有查询到结果,因此不存储在redis中,redis命中率非常低,当redis没有命中,则大量的请求来到了数据库,数据库一直处于被大流量访问状态,很容易压力过载(一般属于恶意攻击)。

4.1.2 方案:
1、在微服务网关或拦截器中设置逻辑监控,必要时采取封ip操作
2、每次将请求的数据都存入redis中并设置过期时间,设置key-null数据(过期时间设置短点,如1分钟),如果大量请求中存在有重复的数据,那么第二次以后的操作都会查询到redis,减少MySQL压力
3、在网关中增加逻辑校验,筛选掉不规则数据,如id<0的数据
4、bitmap白名单策略,将所有数据id存放在bitmaps中,id作为偏移量,存储0/1表示是否存在,存在则放行,不存在则拦截。(这种策略需要提前将所有的id缓存在bitmap中,效率偏低)
4.2 缓存击穿
4.2.1 现象:
指查询某个key(热点数据)在缓存中没有,但数据库有(一般是缓存时间到期),由于这个key是热点数据,在同一时间有大量用户访问这个key,并发量极高,请求发现redis没有,则全部来到数据查询,造成数据库压力瞬间飙升。

4.2.2 方案:
1、如果是整个网站中长期处于热点数据的,可以考虑将数据设置为永不过期
2、如果是需要发布某项活动,造成原本不是热点的key,突然变成热点,可以在活动之前将key的过期时间延长至活动结束。(缓存预热)
3、我们知道缓存击穿的原理实在就是大量并发同时来到cache,同时发现cache中没有数据,全部都去数据库获取了,那么我们可以考虑添加互斥锁,如果已经有请求进来获取数据,发现为空,那么就从数据库去获取数据(这段时间是上锁的)。
代码参考:
public String getData(String key) throws InterruptedException {// 首先从缓存读取数据String val = getDataFromRedis(key);// 如果缓存不存在则去数据库获取if (val == null) {// 获取锁if (lock.tryLock()) {// 从数据库获取数据val = getDataFromDB(key);if (val != null) {setCache(key, val);}// 释放锁lock.unlock();} else {// 其他线程获取锁失败,睡眠100毫秒后尝试重新获取Thread.sleep(100);val = getData(key);}} return val;
}
4.3 缓存雪崩
4.3.1 现象:
指某一时间大量缓存过期,请求直接来到数据库,造成数据库压力过载。与缓存击穿不同的是缓存击穿通常是大的并发量访问某一条数据,而某一条数据正好失效。而缓存雪崩是大量的数据同时失效,多个key累加起来的请求流量压力过大。很多数据都查询不到,从而到数据库查询,数据库压力飙升。

4.3.2 方案:
1、将较为重要的数据设置永不过期
2、将缓存数据过期时间设置为随机,防止同一时间大量缓存失效
相关文章:
真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
💗推荐阅读文章💗 🌸JavaSE系列🌸👉1️⃣《JavaSE系列教程》🌺MySQL系列🌺👉2️⃣《MySQL系列教程》🍀JavaWeb系列🍀👉3️⃣《JavaWeb系列教程》…...
蓝桥刷题总结1
数组三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个…...
淘宝商品详情数据接口 关键字搜索接口 请求代码分享
item_get-获得淘宝商品详情item_get_app-获得淘宝app商品详情原数据item_search-按关键字搜索淘宝商品参数说明通用参数说明参数不要乱传,否则不管成功失败都会扣费url说明 https://api-gw.onebound.cn/平台/API类型/ 平台:淘宝,京东等&#…...
【数据结构】链表OJ(二)
Yan-英杰的博客 悟已往之不谏 知来者之可追 目录 一、反转链表 二、合并两个有序链表 三、链表分割 四、链表的回文结构 一、反转链表 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head [1,2] 输出:[2,1] 示例 3…...
Linux系统搭建FTP服务器
安装vsftpdyum -y install vsftpd添加FTP用户方式1、添加只允许通过ftp访问的用户useradd -d /home/ftp ftp_user #-d指定用户登录时的启始目录方式2、允许用户登录操作系统usermod -d /home/ftp -s /bin/bash ftp_user #-s指定用户登入后所使用的shell设置用户登录密码passwd …...
MySQL数据同步到 Redis 缓存的几种方法
1 Mysql查完数据,再同步写入到Redis中缺点1:会对接口造成延迟,因为同步写入redis本身就有延迟,并且还要做重试,如果redis写入失败,还需要重试,那就更费时间了。缺点2:不解耦…...
2023年网络安全比赛--CMS网站渗透中职组(超详细)
一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; 2.使用渗透机对服务器信息收集,将网站的名称作为flag提交; 3.使用渗透机对服务器渗透,将可渗透页面的名称作为flag提交; 4.使用渗透机对服务器渗透,…...
【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴最大公约数一、题目 1、原题链接 4309. 消灭老鼠 2、题目描述 约翰的农场可以看作一个二维平面。 农场中有 n 个老鼠,在毁坏着农田。 第 i 个老鼠的位置坐标为…...
FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持
目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利:工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰…...
JS面试题收集(持续更新好中...)
1.JavaScript 中的垃圾回收机制 定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 JavaScript在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。 四种常见的内存泄…...
2023携程面试题
Java I/O 面试前需要准备: 1. Java 八股文:了解常考的题型和回答思路; 2. 算法:刷 100-200 道题,记住刷题最重要的是要理解其思想,不要死记硬背,碰上原题很难,但 大多数的解题思…...
CANoe中使用CAPL函数接口调用Vflash文件
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...
三天吃透计算机网络面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
shp数据添加wkt字段并导出成csv,leaflet绘制使用
准备的东西:软件2跟软件3具体怎么有这些软件需要自行百度postgresql postgis相关 1.shp数据 2.软件2 3.软件3 1.数据导入 首先你得有软件2的数据库,即postgresql数据库,然后通过postgis的插件进行连接并导入数据, 导入数据…...
Java——二叉树的最近公共祖先及二叉搜索树介绍
目录 二叉树的最近公共祖先 题目 思路一:如果给定的是一颗二叉搜索树, 思路二:假设是孩子双亲表示法 二叉搜索树 定义Node类 查找 删除 插入 二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百…...
Stable Diffusion加chilloutmixni真人图片生成模型,AI绘图杀疯了
上期图文教程,我们分享过AI绘图大模型Stable Diffusion以及中文版本文心AI绘画大模型的基础知识以及代码实现,截至到目前为止。Stable Diffusion模型已经更新到了V2.1版本,其文生图大模型也越来越火,其在2022年底,由AI绘制的图片被荣为国际大奖,让大家对AI绘画大模型也越…...
Matplotlib 绘图实用大全
本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…...
MyBatis源码用了哪些设计模式?
MyBatis源码用了哪些设计模式?前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中,使用了大量的设计模式对工程架…...
【16.整数转罗马数字】
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...
前端小技巧
1.html 1.1 网站自动刷新 应用场景: 网页定期自动刷新(现在基本淘汰了,采用ajax);自动跳转到指定页面,这个自动跳转的好处就是不需要JS调用,属于纯html网页自动跳转 v7-网站自动刷新 你可以…...
别再只用开发板了!拆解HLK-V20语音模块的供电与驱动:7805和ULN2003的选型与避坑指南
HLK-V20语音模块的硬件设计进阶:从7805到ULN2003的工程实践 在智能硬件开发领域,语音控制模块的应用越来越广泛,但很多开发者往往只关注功能实现,忽略了底层硬件设计的可靠性。HLK-V20作为一款性价比较高的语音识别模块࿰…...
网盘直链解析助手:八大平台一键获取真实下载地址的完整指南
网盘直链解析助手:八大平台一键获取真实下载地址的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…...
终极指南:如何用MAA自动化助手解放你的《明日方舟》日常?
终极指南:如何用MAA自动化助手解放你的《明日方舟》日常? 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址…...
手机号码定位工具:3分钟快速查询归属地的终极指南
手机号码定位工具:3分钟快速查询归属地的终极指南 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/…...
Nemotron-Cascade:强化学习驱动的模型级联推理框架
1. 项目概述:当推理模型遇上级联强化学习去年在优化一个多模态问答系统时,我遇到了一个典型困境:单一模型在简单问题上表现优异,但面对复杂推理任务时,准确率会断崖式下跌。这让我开始关注模型级联技术——而Nemotron-…...
2026年5月阿里云如何部署Hermes Agent/OpenClaw?百炼token Plan配置全解析
2026年5月阿里云如何部署Hermes Agent/OpenClaw?百炼token Plan配置全解析。OpenClaw和Hermes Agent是什么?OpenClaw和Hermes Agent怎么部署?如何部署OpenClaw/Hermes Agent?2026年还在为部署OpenClaw和Hermes Agent到处找教程踩坑…...
DeepSleep-beta:为开发者设计的智能睡眠辅助工具技术解析
1. 项目概述:一个面向开发者的深度睡眠辅助工具最近在GitHub上看到一个挺有意思的项目,叫“DeepSleep-beta”。光看名字,你可能会以为这是个健康或睡眠监测应用,但实际上,它是一个为程序员和开发者群体量身定制的工具。…...
告别干净数据!用PyTorch实战Noise2Self:一个盲点网络搞定图像去噪
告别干净数据!用PyTorch实战Noise2Self:一个盲点网络搞定图像去噪 当你在深夜处理天文观测图像时,那些恼人的噪声点是否总让你抓狂?或是当你试图修复老照片时,发现原始底片早已损毁,根本找不到"干净&q…...
## 001、AI Agent 概述:什么是智能体?从概念到2026年的演进
上周调试一个边缘计算节点,遇到个挺有意思的“灵异事件”。设备端跑着一个基于大模型的Agent,负责根据传感器数据自动调整工业机械臂的抓取策略。日志里看,Agent明明已经“思考”出了最优路径,也生成了对应的控制指令,…...
构建可靠AI智能体:mcp-injector中间件的故障转移、安全治理与可观测性实践
1. 项目概述:一个为AI智能体打造的“智能网关”与“安全护栏” 如果你正在构建或使用基于大语言模型的智能体,比如让AI帮你处理客服工单、分析数据或者自动执行工作流,那么你肯定遇到过这些头疼的问题:调用的AI服务突然挂了怎么办…...
