缓存穿透、缓存击穿和缓存雪崩1、缓存穿透2、缓存击穿3、缓存雪崩1、缓存穿透首先我们来了解一下图所示的这个基本操作。当客户端发送数据请求的时候服务业务会执行MySQL数据库或者将结果返回给客户端当然这在并发量少的时候是没有任何问题的。如果并发量比较大每一次请求数据都要操作MySQL数据库那么就需要执行阻塞的IO操作。最简单、最廉价的办法就是缓存此时操作流程就会演变成如图所示的业务架构图。当客户端发送请求过来之后业务服务先去缓存中判断数据是否在Redis中。如果数据不在缓存中则去MySQL数据库查询然后把查询到的数据缓存到Redis中再把结果返回给客户端当下一次请求同样的数据时就可以直接从Redis获取数据避免了再去MySQL数据库查询这从很大程度上提升了程序的响应性能。需要注意的是当查询Redis中没有数据时该查询会下沉到数据库层同时数据库层也没有该数据当出现大量这种查询或被恶意攻击时接口的访问全部透过Redis访问数据库而数据库中也没有这些数据我们称这种现象为“缓存穿透”。缓存穿透会穿透Redis的保护让底层数据库的负载压力变大。如果大量请求查询的数据既不在缓存中也不在MySQL数据库中那么会造成每次的查询操作都会对数据库进行查询因为不存在的数据是没有办法缓存的于是就造成MySQL数据库承受高并发的查询请求如图所示。针对上面的问题这里列出两种解决方案在业务服务访问层对用户进行校验来判断是不是来自恶意用户的请求比如对请求参数进行校验和检查一段时间内请求同一个服务的次数。利用前面学习过的布隆过滤器将数据库层有关数据的键存储到布隆过滤器中以判断访问的键是否在底层的数据库中。如果在布隆过滤器中则查询缓存如果缓存没有则再次查询MySQL数据库如果布隆过滤器中没有则直接返回我们预先规定好的结果即可。在数据访问的第一层我们采用布隆过滤器过滤见图虽然不能完全避免数据穿透的现象但布隆过滤器已经可以将99.99%的穿透查询屏蔽在Redis层极大地降低了底层数据库的压力减少了资源浪费。我们也可以把布隆过滤器的层级放到缓存下一层当请求数据的时候先去缓存层获取。如果缓存里面有数据就直接返回结果如果缓存没有就去布隆过滤器判断相关数据的键是否在布隆过滤器中如果在就继续查询MySQL数据库如果不存在就直接返回不再进行数据库层级的查询。2、缓存击穿缓存击穿和缓存穿透从名词上很难区分开它们的区别主要是“穿透”表示底层数据库没有数据而且缓存层内也没有数据而“击穿”表示底层数据库有数据但是缓存层内没有数据。当热点数据的键从缓存中淘汰出去后大量访问同时请求这个数据就会将查询下沉到数据库层此时数据库层的负载压力增大我们称这种现象为缓存击穿。下图中出现了缓存击穿问题大量的数据请求下沉到了MySQL数据库。针对上面的问题这里列出两种解决方案热点键的过期时间设置为永不过期。利用互斥锁保证同一时刻只有一个客户端可以查询底层数据库的数据一旦查到数据就缓存至Redis内以避免其他大量请求同时穿过Redis去访问底层数据库。3、缓存雪崩缓存击穿说的是热点数据过期缓存雪崩说的是大面积的数据过期。缓存雪崩是指Redis中大量的键几乎同时过期然后大量并发的查询穿过Redis冲击到底层数据库上此时数据库层的负载压力会增大。相比于缓存击穿缓存雪崩更容易发生。在图中大量缓存同一时间过期造成了缓存雪崩问题。针对上面的问题这里列出两种解决方案在可接受的时间范围内随机设置键的过期时间分散键的过期时间以防止大量的键在同一时刻过期。比如之前大量键的过期时间都是1个小时现在就可以设置为不同的时间段比如1小时1分钟、1小时2分钟等。可以根据业务情况选择不同的随机因子。键的过期时间设置为永不过期根据实际业务情况而定。
2026大庆装饰公司推荐,二手房改造,全包,老房改造,商装设计,大包公司优选指南! 近年来,随着大庆城市更新步伐的加快,本地的装修需求也呈现出多元化的增长态势,不少居住了十几年的老房业主有翻新改造的需求,刚收房的刚需业主需要家装整装服务,还有不少创业者有商业空间装修的需求。装修对于大多数人…
CPT外汇:外汇市场服务体验的视角复盘 对新手与注重稳健体验的外汇内容读者而言,“能看懂”往往比“堆概念”更重要。围绕CPT外汇,以下重点写清解释是否通俗、规则是否易查、提示是否前置,以及服务是否具备连续性。外汇相关平台的价值,体现在长期一致性与信息呈现的细致…
如何5分钟解决Windows软件兼容性问题:Visual C++运行库终极修复工具完整指南 如何5分钟解决Windows软件兼容性问题:Visual C运行库终极修复工具完整指南 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到软件无法启…
AI编程接单从写代码到交付上线-5步跑通完整流程附工具清单 AI编程接单从写代码到交付上线-5步跑通完整流程附工具清单 2026年了,说个数据你可能会吓一跳。 Sonar最新的开发者调查报告显示,72%的开发者每天在用AI工具写代码。AI生成或辅助的代码占比已经达到42%。三年前这个数字才6%。 三年翻了7倍。 什么意思&…
pybind11混合编程合规性验证:从内存安全到多线程的实战指南 1. 项目概述:为什么我们需要关注pybind11的合规性?如果你正在用C写高性能计算核心,然后用pybind11给它包上一层Python的“糖衣”,让算法工程师和数据科学家们能愉快地调用,那你很可能已经踩过或者即将踩进一个深坑。这…
卡地亚中国官方售后服务中心|服务热线及门店详细地址权威信息声明(2026年7月更新) - 卡地亚官方售后中心 卡地亚中国官方售后服务中心的服务热线已正式变更为400-992-3692,该号码为品牌在全国范围内统一的客户服务接入渠道,客服在线时间为每日8:00至22:00。官方售后地址在2026年7月更新为位于国内核心城市的高标准直属服务…
解决 NT_STATUS_LOGON_TYPE_NOT_GRANTED 解决问题:windows新建共享文件夹报错,linux访问 smbclient //192.168.x.xxx/share -U share -m SMB2报错:STATUS_LOGON_TYPE_NOT_GRANTED Windows secpol.msc 策略修改。 在 Windows,必须管理员账号操作 报错本质:安全…
I2C 协议 SMBus 与 PMBus 对比:3 大差异点与嵌入式系统选型指南 I2C协议SMBus与PMBus对比:3大差异点与嵌入式系统选型指南在嵌入式系统设计中,选择合适的通信协议往往决定了项目的可靠性和开发效率。当工程师面对I2C及其衍生标准SMBus、PMBus时,常常陷入选择困境——这三种协议共享相同的物理层,…
【大数据毕业设计】基于 Python + 深度学习的短视频多模态内容理解系统的设计与实现 基于 Python + 深度学习的短视频个性化推送系统(源码+文档+远程调试,全bao定制等) 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
2026年7月最新金华宇舶官方售后客户服务热线与维修网点地址汇总 - 亨得利官方服务中心 金华宇舶官方售后客户服务热线与维修网点地址信息是每一位宇舶腕表拥有者都极为关注的核心内容。作为瑞士高端制表品牌,宇舶以其精湛工艺与创新设计闻名,确保腕表始终处于理想运行状态,离不开官方售后渠道的合规支持…
HS2汉化补丁终极指南:一键解锁Honey Select 2完整中文体验 HS2汉化补丁终极指南:一键解锁Honey Select 2完整中文体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 还在为Honey Select 2的日文界面而苦恼吗…
怎么寄快递才能便宜呢?2026年7月寄快递省钱攻略 - 生活情报姬 同一箱老家特产,同事花22寄的,我花9块。不是我路子野,是我按场景选了渠道。寄快递便宜不便宜,一半看你会不会"对号入座"——退换货、卖闲置、寄礼物,招数都不一样。 分场景才最省 丰火递想不管啥场景都…
3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 3步彻底解决Windows右键菜单混乱问题:ContextMenuManager使用全攻略 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否曾为Windows右键菜单中那些…
GXDE OS下Wayland兼容性实战:从deepin-mutter原理到VMware Tools修复 如果你正在用 GXDE OS 或者任何基于 Deepin 的发行版,并且遇到了“检测到窗口系统采用 Wayland 协议,程序即将退出”这类弹窗,或者发现 VMware Tools 在 Ubuntu 24.04 这类默认 Wayland 的系统上启动失败,那这篇文章就是为你准备的…
企业AI落地困境与AgenticOps实践指南 1. 企业AI落地的现实困境与破局之道过去两年,大模型技术呈现爆发式增长,从GPT-3到GPT-4,从LLaMA到DeepSeek,模型参数规模从百亿级跃升至万亿级,多模态能力从单一文本扩展到图文音视频的综合处理。然而在企业应用层面&a…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…