Redis穿透、击穿、雪崩

redis是一款常用的非关系型数据库,我们常用与作为数据缓存的组件。
接下来介绍一下面试中常被问到的三个概念以及简单的解决方法。

穿透

什么叫缓存穿透
缓冲穿透,是当有一个请求过来时,查询redis缓存不存在,又去查询数据库(如MySQL)。数据库中也不存在这个数据,因为不存在该数据,所以不会对其做缓存,所以当下一个请求继续查询这个数据的时候,请求还是会打到数据库,这种情况就叫做缓冲穿透。

解决方法

  • 最简单的解决方法就是对数据库查询时查不到的数据也做缓存,可以缓存空对象。
  • 使用布隆过滤器预先判断数据是否存在,如果布隆过滤器返回不存在,那么可以确定数据一定不存在,直接返回错误信息,无需查询缓存和数据库。

击穿

什么是缓冲击穿
就是一个热点数据(比如秒杀的一个数据),短时间会有大量的请求过来。如果这个数据缓存中没有(已过期或者被删除),那么短时间(瞬时)来了大量的请求,当第一个请求打到数据库,但是还没有做好数据的缓存,第2、3、4、…一堆请求都过来了,请求都会一并打到数据库。

解决方法

  • 设置合理的过期时间,已经每次访问后更新过期时间
  • 预热缓冲
  • 使用分布式锁

雪崩

什么是雪崩
雪崩和击穿类似,击穿是一个热点数据,雪崩是同一时间大量缓冲过期,导致请求直接打到数据库。

解决方法

  • 合理设计过期时间,使过期时间均布(或随机)
  • 使用分布式锁

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

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

相关文章

前向-后向卡尔曼滤波器(Forward-Backward Kalman Filter)资料汇总

《卡尔曼滤波引出的RTS平滑》参考位置2《卡尔曼滤波系列——(六)卡尔曼平滑》《关于卡尔曼滤波和卡尔曼平滑关系的理解》——有m语言例程《Forward Backwards Kalman Filter》——Matlab软件《卡尔曼滤波与隐马尔可夫模型》

linux命令详解,存储管理相关

存储管理 一、内存使用量,free free 命令是一个用于显示系统中物理内存(RAM)和交换空间(swap)使用情况的工具 free -m free -m -s 5参数 -b 功能: 以字节(bytes)为单位显示内存使用情况。说…

PHP API的路由设计思路

PHP API的路由设计是构建高效、可维护API的关键环节。以下是一套完整的PHP API路由设计思路: 一、明确设计原则 使用统一资源标识符(URI):通过URI来标识资源,确保每个资源都有一个唯一的地址。使用HTTP方法&#xff…

推荐一款功能强大的视频修复软件:Apeaksoft Video Fixer

Apeaksoft Video Fixer是一款功能强大的视频修复软件,专门用于修复损坏、不可播放、卡顿、画面失真、黑屏等视频问题。只需提供一个准确且有效的样本视频作为参考,该软件就能将受损视频修复到与样本视频相同的质量。该软件目前支持MP4、MOV、3GP等格式的…

Redis如何保证数据不丢失(可靠性)

本文主要以学习为主,详细参考:微信公众平台 Redis 保证数据不丢失的主要手段有两个: 持久化 多机部署 我们分别来看它们两的具体实现细节。 1.Redis 持久化 持久化是指将数据从内存中存储到持久化存储介质中(如硬盘&#xf…

第三十九章 基于VueCli自定义创建项目

目录 1. 选择创建模式 2. 选择需要的功能 3. 选择历史模式还是哈希模式 ​4.CSS预处理器 5. 选择ESLint规则 6. 开始创建项目 ​7. 自定义项目最终结构 1. 选择创建模式 输入创建的项目名,创建项目: 这里选择自定义模式: 2. 选择需要…

【Vue3】基础语法案例

图片点击轮播 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>图片轮播</title> </head><body><div id"app"><h3>{{ number }}</h3><!-- 通过模板字…

16.useForm

在 React 应用中,处理表单状态是一个常见但有时复杂的任务。每个表单字段通常需要自己的状态和更新逻辑,这可能导致代码重复和难以维护。useForm 钩子提供了一种简洁的方法来管理整个表单的状态,大大简化了表单处理过程。这个自定义钩子不仅减少了样板代码,还提高了表单处理…

CentOS8.4 部署 k8s 1.31.2

文章目录 配置 aliyun 源配置时间同步查看 安装 docker下载一些必备工具配置 aliyun 的源更新源删除旧的 podman安装 docker设置开机启动 配置 hosts 表多主机协同可以不写 关闭 swap 分区配置 iptables配置 k8s 源初始化 master 节点初始化 node 节点 查看集群状态 [!warning]…

【大数据学习 | kafka高级部分】kafka的kraft集群

首先我们分析一下zookeeper在kafka中的作用 zookeeper可以实现controller的选举&#xff0c;并且记录topic和partition的元数据信息&#xff0c;帮助多个broker同步数据信息。 在新版本中的kraft模式中可以这个管理和选举可以用kafka自己完成&#xff0c;而不再依赖zookeeper。…

CTF-WEB:php函数杂记(手册)持续更新

exif_imagetype() exif_imagetype 是 PHP 中的一个函数&#xff0c;用于判断图像文件的类型。它通过读取图像文件的前几个字节来推断文件类型&#xff0c;而无需依赖文件扩展名。这在处理文件上传时特别有用&#xff0c;因为文件扩展名可能会被伪造。 函数原型 exif_imagety…

生物发酵装备在制药工业中的应用与发展前景

在现代制药工业中&#xff0c;发酵技术扮演着越来越重要的角色。发酵设备&#xff0c;作为这一技术的核心&#xff0c;不仅促进了抗生素、疫苗和生物药物的生产&#xff0c;还为酶的生物合成提供了必要的条件。 发酵技术是指人们利用微生物的发酵作用&#xff0c;通过一系列的…

linux部分问题以及解决方式

目录 1.ubuntu桌面不显示了&#xff0c;只有命令行1.1启动gdm3服务1.2安装lightdm桌面管理包 1.ubuntu桌面不显示了&#xff0c;只有命令行 有如下两种解决方式。 1.1启动gdm3服务 这种方法只能临时生效&#xff0c;每次重启都要手动启动 sudo service gdm3 restart 1.2安装…

js 数据类型=》理解=》应用

文章目录 js 类型判断Object.prototype.toString.call 方法的理解与实现一、对Object.prototype.toString.call方法的理解二、Object.prototype.toString.call方法的实现原理三、简单的模拟实现示例 Object.prototype上的toString方法 理解应用补充&#xff08;symbol/BigInt&a…

HCIP快速生成树 RSTP

STP&#xff08;Spanning Tree Protocol&#xff0c;生成树协议&#xff09;和RSTP&#xff08;Rapid Spanning Tree Protocol&#xff0c;快速生成树协议&#xff09;都是用于在局域网中消除环路的网络协议。 STP&#xff08;生成树协议&#xff09; 基本概念&#xff1a; ST…

Excel 无法打开文件

Excel 无法打开文件 ‘新建 Microsoft Excel 工作表.xlsx",因为 文件格式或文件扩展名无效。请确定文件未损坏&#xff0c;并且文件扩展名与文件的格式匹配。 原因是卸载WPS之后&#xff0c;注册表未修改过来。 重新下载WPS&#xff0c;新建&#xff0c;xls工作表&#x…

【计算机网络】网络框架

一、网络协议和分层 1.理解协议 什么是协议&#xff1f;实际上就是约定。如果用计算机语言进行表达&#xff0c;那就是计算机协议。 2.理解分层 分层是软件设计方面的优势&#xff08;低耦合&#xff09;&#xff1b;每一层都要解决特定的问题 TCP/IP四层模型和OSI七层模型…

Kafka java 配置

前言&#xff1a; 大家好&#xff0c;大家在springboot项目中&#xff0c;经常采用 KafkaListener 做为消费者。这个是spring为我们封装的。 但是某些情况 注解的方式并不能满足需求。这个时候就需要手动版本了。 介绍&#xff1a; 我们已经集成spring-Kafka 就不需要再…

leetCode 739.每日温度

题目 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入: te…

el-select下拉菜单虚拟列表化(含搜索功能)

需求简介 vue2element-ui项目中&#xff0c;当el-select中数据量较大时&#xff0c;会导致页面加载和渲染卡顿。在现在的el-select的基础上使用分页或者虚拟列表的形式去处理大量的下拉菜单&#xff0c;保证页面的正常渲染及el-select的正常回显。 需求分析 主要涉及几个点&…