redis-击穿、穿透、雪崩

news2024/11/23 20:08:42

击穿、穿透、雪崩经常听人说吧? 那他到底是啥呢?无非就是在有缓存层的情况下,对各种绕过缓存层从而直接落到了DB上的情况进行的分类。

概念性的东西大概如下,我是记不住,后期具体使用与规避这些问题才是大事,后面有机会更新吧。

  1. 击穿(Cache Penetration)
    定义: 击穿是指请求的数据在缓存中永远找不到,导致请求直接落到数据库上。这种情况通常是由于某些恶意请求或者程序错误导致的,请求的 key 本身是无效的,或者根本不存在。
    原因:
    恶意请求:攻击者故意请求不存在的 key。
    程序错误:代码逻辑错误,生成了无效的 key。
    解决方案:
    布隆过滤器:使用布隆过滤器预先判断 key 是否存在,如果布隆过滤器返回不存在,则直接返回空结果,不再查询数据库。
    缓存空值:对于查询不到的数据,也缓存一个空值(例如 null),并设置一个较短的过期时间,防止频繁查询数据库。
    验证参数:在接口层增加校验,不合法的参数直接返回。
    黑名单:设定一个合理的阈值,当某个IP的请求次数超过阈值时,将其加入黑名单,限制其访问频率或直接拒绝其请求。
  2. 穿透(Cache Miss)
    定义: 穿透是指缓存中某个 key 失效或被删除,导致请求绕过缓存层直接访问数据库。这种情况通常是正常的缓存过期或缓存被主动删除导致的。
    原因:
    缓存过期:缓存中的数据超过了设定的过期时间。
    主动删除:缓存中的数据被主动删除,例如在更新数据库后删除缓存。
    解决方案:
    缓存预热:在系统启动时或定期预热缓存,提前加载常用数据。
    异步加载:当缓存未命中时,可以异步加载数据并更新缓存,避免所有请求同时访问数据库。
  3. 雪崩(Cache Avalanche)
    定义: 雪崩是指大量缓存 key 同时失效,导致大量请求同时绕过缓存层直接访问数据库,造成数据库压力剧增,甚至崩溃。这种情况通常是由于缓存过期时间设置不合理或突发的高并发请求导致的。
    原因:
    缓存过期时间集中:多个缓存 key 设置了相同的过期时间,导致同时失效。
    突发高并发:短时间内大量请求同时访问数据库。
    解决方案:
    随机过期时间:为缓存 key 设置随机的过期时间,避免大量 key 同时失效。
    限流降级:在高并发情况下,使用限流和降级策略,限制请求频率,保护数据库。
    缓存预热:在系统启动时或定期预热缓存,提前加载常用数据。
    多级缓存:使用多级缓存策略,例如本地缓存 + 分布式缓存,减少对数据库的直接访问。

个人理解

  • 击穿: 请求的数据在缓存里永远找不到,请求绕过缓存层
  • 穿透:部分key失效或被删除,请求绕过缓存层
  • 雪崩:所有缓存key同时失效,所有请求全部绕过缓存层

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

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

相关文章

使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程

当涉及到图数据时,复杂性是不可避免的。无论是社交网络中的庞大互联关系、像 Freebase 这样的知识图谱,还是推荐引擎中海量的数据量,处理如此规模的图数据都充满挑战。 尤其是当目标是生成能够准确捕捉这些关系本质的嵌入表示时,…

23种设计模式-模板方法(Template Method)设计模式

文章目录 一.什么是模板方法模式?二.模板方法模式的特点三.模板方法模式的结构四.模板方法模式的应用场景五.模板方法模式的优缺点六.模板方法模式的C实现七.模板方法模式的JAVA实现八.代码解析九.总结 类图: 模板方法设计模式类图 一.什么是模板方法模…

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明, 将Form的属性Opacity,由默认的100% 调整到 80%(尽量别低于50%),这个数字越小越透明! 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体,窗体出现在屏幕…

DRNN 神经网络的Jacobian 信息辨识

DRNN 神经网络的 Jacobian 信息辨识 1. 基本原理 Jacobian 矩阵用于描述多输入多输出系统中输入和输出之间的偏导关系,其形式为: 对于 DRNN(Dynamic Recurrent Neural Network),其动态特性使得 y(t)\mathbf{y}(t)y(t…

iptables网络安全服务详细使用

iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核&…

《DAMA 数据管理知识体系指南》读书笔记 - 第 2 章 数据处理伦理

文章目录 1. 章节概述2. 核心概念与定义3. 重要方法与实践步骤4. 理论与实际结合5. 重点6. 理解与记忆要点7. 复习思考题标题图——书籍图片 WPS AI生成的XMind链接(不用要源文件,下载不了): 【金山文档 | WPS云文档】 第2章 数据…

《线性代数的本质》

之前收藏的一门课,刚好期末复习,顺便看一看哈哈 课程链接:【线性代数的本质】合集-转载于3Blue1Brown官方双语】 向量究竟是什么 线性代数中最基础、最根源的组成部分就是向量,需要先明白什么是向量 不同专业对向量的看法 物理专…

AI 大模型如何重塑软件开发流程?——技术革新与未来展望

人工智能的蓬勃发展为许多领域注入了强劲动力,而在软件开发这一关键技术领域,AI 大模型的应用正在彻底改变传统流程。从代码自动生成到智能测试,再到协同开发和流程优化,AI 正逐步成为软件开发者的得力助手,也推动企业…

三季度业绩亮点多元,宝尊全域经营走向破茧成蝶

电商行业的变革从未停止,始终反映着网络消费和品牌发展的趋势,以及未来的想象空间,因此令赛道上的相关公司备受关注。 那么,当前赛道正在发生哪些变化?11月21日,行业龙头宝尊电商发布截至2024年9月30日的2…

机器学习day7-线性回归3、逻辑回归、聚类、SVC

7欠拟合与过拟合 1.欠拟合 模型在训练数据上表现不佳,在新的数据上也表现不佳,常发生在模型过于简单无法处理数据中的复杂模式时。 特征: 训练误差较高 测试误差也高 模型过于简化,不能充分学习训练数据中的模式 2.过拟合 …

【云计算】腾讯云架构高级工程师认证TCP--考纲例题,知识点总结

【云计算】腾讯云架构高级工程师认证TCCP–知识点总结,排版整理 文章目录 1、云计算架构概论1.1 五大版块知识点(架构设计,基础服务,高阶技术,安全,上云)1.2 课程详细目录1.3 云基础架构设计1.4…

proto3语法详解

proto3语法详解 字段规则消息类型的定义与使⽤定义使用 enum类型定义与使用定义规则定义时注意事项 Any类型Any类型介绍Any类型使用 oneof类型oneof类型的介绍oneof类型的使用 map类型map类型的介绍map类型的使用 默认值更新消息更新规则保留字段reserved 未知字段未知字段获取…

【STM32】在 STM32 USB 设备库添加新的设备类

说实话,我非常想吐槽 STM32 的 USB device library,总感觉很混乱。 USB Device library architecture 根据架构图: Adding a custom class 如果你想添加新的设备类,必须修改的文件有 usbd_desc.cusbd_conf.cusb_device.c 需要…

怎么编译OpenWrt镜像?-基于Widora开发板

1.准备相应的环境,我使用的环境是VMware16ubuntu20.04,如图1所示安装编译所需的依赖包; sudo apt-get install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-…

神经网络问题之一:梯度消失(Vanishing Gradient)

梯度消失(Vanishing Gradient)问题是深度神经网络训练中的一个关键问题,它主要发生在反向传播过程中,导致靠近输入层的权重更新变得非常缓慢甚至几乎停滞,严重影响网络的训练效果和性能。 图1 在深度神经网络中容易出现…

JavaWeb之综合案例

前言 这一节讲一个案例 1. 环境搭建 然后就是把这些数据全部用到sql语句中执行 2.查询所有-后台&前台 我们先写后台代码 2.1 后台 2.2 Dao BrandMapper: 注意因为数据库里面的名称是下划线分割的,我们类里面是驼峰的,所以要映射 …

PLC与PLC跨网段通讯的几种方法:厂区组网实践

PLC通常通过以太网或其他工业网络协议(如PROFINET、Modbus TCP等)进行通信。当PLC位于不同的网段时,它们不能直接通信,需要特殊的配置或设备来实现通信,不同网段的PLC通讯变得尤为重要。 随着工业网络的发展和工业4.0概…

原生openGauss与Oracle数据库函数兼容性对比验证测试

———————————————— 一、测试目的 近期在进行调研去O,为此研究了下原生openGauss和Oracle数据库兼容性,特整理测试了Oracle常用函数和openGauss数据库的对比测试。 二、创建DUAL虚拟表 openGauss 数据库不提供DUAL虚拟表,需要通过如下方…

创建HTTPS网站

每天,我们都会听到网络上发生身份盗窃和数据侵权的案例,这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词:HTTP与HT…

Bokeh实现大规模数据可视化的最佳实践

目录 引言 一、Bokeh简介 二、安装Bokeh 三、数据准备 四、性能优化 五、创建图表 六、添加交互功能 七、应用案例 八、高级技巧 九、总结 引言 在数据科学领域,数据可视化是一个至关重要的环节。通过可视化,我们可以直观地理解数据的特征和趋势,为数据分析和决策…