缓存失效问题-雪崩/击穿/穿透

1. 缓存雪崩

1.1. 定义

大量缓存同一时间失效,大量访问数据库。

1.2. 发生条件

  • 大量key相同过期时间
  • 缓存服务器重启

1.3. 解决方案

  • 设置随机的缓存过期时间
  • 缓存预热
  • 高可用缓存集群
  • 降级限流

2. 缓存击穿

2.1. 定义

一个热点数据在缓存里失效,很多请求直接访问数据库,数据库里有数据。

2.2. 发生条件

  • 单个热点key失效
  • 热点数据访问突增

2.3. 解决方案

  • 热点key不过期
  • 加互斥锁:热点数据过期需要从数据库去取的时候,只让一个线程去取,其他线程CAS查询即可

3. 缓存穿透

3.1. 定义

访问的数据在缓存和数据库里都没有。

3.2. 发生条件

  • 恶意攻击,构造大量不存在的key查询
  • 数据库数据变动未及时更新到缓存

3.3. 解决方案

  • 参数检验:对请求的参数做合法检验,明显不合法的就不查询了
  • 布隆过滤器:一定不存在的可以被挡掉
  • 空值缓存:查询到数据库中也不存在的key,也放入到缓存,其值为一个特殊标记,比如null

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

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

相关文章

k8s 四种Service类型(ClusterIP、NodePort、LoadBalancer、ExternalName)详解

🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、k8s概述 2、Service在Kubernetes中的…

大模型本地化部署2-Docker部署MaxKB

大模型本地化部署2-Docker部署MaxKB 0、MaxKB简介1、安装docker2、在docker中拉取MaxKB镜像3、运行镜像4、访问MaxKB5、创建应用6、使用应用进行对话 0、MaxKB简介 MaxKB是一款基于LLM大预言模型的知识库问答系统。具有以下特点: 多模型支持:支持对接主…

开放式耳机怎么戴?佩戴舒适在线的几款开放式耳机分享

开放式耳机的佩戴方式与传统的入耳式耳机有所不同,它采用了一种挂耳式的设计,提供了一种新颖的佩戴体验,以下是开放式耳机的佩戴方式。 1. 开箱及外观:首先,从包装盒中取出耳机及其配件,包括耳机本体、充电…

什么是密码学?

什么是密码学? 密码学是一种通过使用编码算法、哈希和签名来保护信息的实践。此信息可以处于静态(例如硬盘驱动器上的文件)、传输中(例如两方或多方之间交换的电子通信)或使用中(在对数据进行计算时&#…

软件造价之如何确定定开和成品软件的边界?

在软件项目中,我们常常面临选择:是直接购买并使用成品软件,还是根据特定需求定制开发?这一决策不仅关乎项目成本也关乎到我们成本测算方法的选择。因此,明确定开与成品软件的边界,是软件造价的首要任务。 …

设计模式-结构性模式-桥接模式

1.桥接模式定义 桥接模式就是将抽象部分与他的实现部分分离,使他们都可以独立的变化; 桥接模式用一种巧妙地方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,…

vs属性表生效顺序

vs属性表生效顺序 在VS中打开一个项目,在属性管理器中可以看到很多属性表,如下: Application Unicode Support Core windows Libraries相信很多人会有和我一样的疑惑,这么多属性表,最终的属性以哪个表为准呢&#xf…

Leetcode JAVA刷刷站(99)恢复二叉搜索树

一、题目概述 二、思路方向 要解决这个问题,我们可以采用中序遍历二叉搜索树(BST)的方法,因为中序遍历BST会返回一个有序的数组。由于只有两个节点被错误地交换了,所以中序遍历的结果中将有两个位置上的元素是逆序的。…

什么是数据库 DevOps?

原文地址 https://www.bytebase.com/blog/what-is-database-devops/ 在深入研究数据库 DevOps 之前,先回顾一下什么是 DevOps。它没有统一的定义,但我们知道它起源于软件开发方法与部署和运维的结合。 大约 2007 年和 2008 年,软件开发和 I…

.NET8 Web 利用BAT命令 一键部署 IIS - CI-CD基础

1. Windows Server 前置准备 1.1 IIS安装好 1.2 .NET8 Sdk 运行时 安装 官方下载地址:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0 1.3 创建一个.NET8 WebMvc项目 生成发布包 微软MVC这个项目模板直接创建,发布 2. 利用 BAT 来一键部署…

Html5—表单

第三章 表单 表单 第三章 表单3.1表单元素3.1.1表单格式3.1.2表格元素格式3.1.3元素属性3.1.4元素标注3.1.5 表单初级验证 3.1表单元素 3.1.1表单格式 <!-- action:表单向何处发送method:get/post, 表单提交方式get:比较快&#xff0c;当不安全post:安全&#xff0c;比较慢…

【STM32】FMC

FMC功能与FSMC类似&#xff0c;但比FSMC更强大&#xff0c;但仅在F4 / F7 / H7等高级一点的MCU上支持&#xff0c;F1不支持。虽然我的是F103&#xff0c;但顺便都看了。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目…

Vue 和 Element Plus 弹框组件详解:从基本实现到异步数据加载与自定义内容(实战)

目录 前言1. 基本知识2. 模版3. 实战 前言 主要是通过一个按钮触发一个按钮框&#xff0c;多种方式的逻辑&#xff0c;多种场景 原先通过实战总结&#xff0c;基本的知识推荐阅读&#xff1a; 详细分析Element Plus中的ElMessageBox弹窗用法&#xff08;附Demo及模版&#x…

秋招复习笔记——嵌入式裸机开发

底层相关的内容&#xff0c;之前掌握的不扎实&#xff0c;现在重新把相关重点记录一下&#xff0c;做个笔记记诵。 相关基础知识 ST简单内容 用的F103ZET6&#xff0c;72MHz&#xff0c;FLASH是512KB&#xff0c;SRAM是64KB&#xff0c;144个引脚&#xff0c;2基本定时器&am…

MATLAB算法实战应用案例精讲-【采样路径规划算法】RRT算法(附MATLAB源码)

目录 前言 算法原理 算法流程 算法流程图 优缺点 伪代码 知识拓展 基于BINN算法的CCPP全路径覆盖算法 1、CCPP整体算法 2. 核心代码 代码 1.MATLAB 前言 RRT算法是适用于高维空间,通过对状态空间中的采样点进行碰撞检测,避免了对空间的建模,较好的处理带有非…

密码学之广播加密

1.什么是广播加密 广播加密是一种支持在不安全的公开信道上实现多用户数据安全共享的加密技术&#xff0c;适用于一对多安全传输场景。 2.广播加密的工作原理 数据拥有者首先选取一组接收者&#xff0c;运行广播加密算法&#xff0c;将加密得到的密文发布到公开信道&#xf…

百度ERNIE-SDK使用示例

百度ERNIE-SDK使用示例 文档 https://github.com/PaddlePaddle/ERNIE-SDK/blob/develop/erniebot/README.md https://ernie-bot-agent.readthedocs.io 调用大模型示例 import erniebot from typing import List, Optionalimport requests import jsonimport asyncio import…

目标 CDC实例数据库更改密码,预定启动报错SQL 错误代码为“-30082”。SQL 状态为:08001。

更改完CDC目标端实例密码后&#xff0c;登录MC更新存储器密码&#xff0c;存储器可正常连接&#xff0c;启动预定报错如下&#xff1a; 源 IBM Data Replication 未获授权&#xff0c;无法复制到该目标。 登录认证失败。 发生 SQL 异常。SQL 错误代码为“-30082”。SQL 状态…

嵌入式学习——ARM学习(1)

1、存储器 高速缓存&#xff08;Cache&#xff09;通常分为三级&#xff1a;L1、L2 和 L3。它们的主要功能和特点如下&#xff1a; 这三级缓存的设计旨在通过层次化存储来优化数据访问速度和处理器性能。 1、L1 缓存&#xff1a; 位置&#xff1a;直接集成在处理器核心内。 大小…

c++自定义迭代器,如跳表,怎么实现

在C中&#xff0c;跳表是一种高效的数据结构&#xff0c;用于存储有序数据并支持快速查找、插入和删除操作。为了在C类中实现跳表迭代器&#xff0c;你需要定义一个迭代器类&#xff0c;并在跳表类中提供相应的接口。以下是一个简单的实现示例&#xff1a; #include <iostr…