缓存穿透、缓存击穿、缓存雪崩以及解决方案

Java面试题

缓存穿透

缓存中和数据库中都没有数据被大量请求,这些请求直接穿透到数据库中,失去了缓存层存在的意义,导致数据库压力过大。

解决方案:

1.数据库中获取不到数据时,将null值放入到缓存中。Redis缓存中可以使用exists命令判断数据是否存在于缓存中,而不是通过值是否为null来判断。(伪造数据攻击时,此方法也会导致缓存中数据增多,所以此类缓存过期时间可以稍微短点儿。)

2.接口层设置拦截。拦截不符合规则的数据,比如请求过来非11位的手机号,全部拦截下来。

缓存击穿

缓存中没有但数据库中存在的某个热点数据,大量请求直接到达数据库。

解决方案:

1.锁。使用分布式锁,保证只有一个请求到数据库中。

2.自动续期。利用定时任务,在缓存失效前通过查询数据库来更新缓存。

3.热点数据设置为永不过期。

缓存雪崩

缓存中数据大面积失效或缓存服务不可用时,大量请求直接到达数据库。

解决方案:

1.缓存中数据的失效时间增加随机值。

2.数据预热。秒杀活动开始前,将所有秒杀商品提前加载到缓存中。

3.使用高可用的缓存部署。

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

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

相关文章

【IC前端虚拟项目】MVU子模块DS文档编写与注意事项

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 DS文档顾名思义就是Design Specification,设计规格文档,对应的就是我们实际一个模块的设计思路和细节: DS - Design Specification(设计规格):"DS" 表示设计规格,它是在架构规格之后,…

法规更新美国玩具标准ASTM F963-17有更新,最新标准为ASTM F963-23

美国材料试验协会 (ASTM)在10月13日发布了新的玩具安全标准:ASTM F963-23,ASTM F963-17美国联邦法规16 CFR 1250还在使用当中,出口美国的玩具的厂商要引起重视。 ASTM F963-17是什么标准? ASTM F963-17是美国玩具检测标准&#…

Java基于SpringBoot+Vue的大学生入学审核系统的设计与开发,附源码、数据库

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

npm包管理工具

npm包管理工具 npm简介npm环境搭建npm命令npm包管理npm package.jsonnpm依赖管理npm脚本管理npm全局包npm 配置npm仓库npm私有包

FMEA软件——如何实现FMEA预期质量目标?

免费试用FMEA软件-免费版-SunFMEA ​为了确保FMEA的有效实施并实现预期的质量目标,可以从以下几点进行: 1. 明确目标和范围:在开始FMEA分析之前,明确界定项目的目标和范围。这有助于确定关注的重点,并为后续的分析工…

JavaScript实现拖拽

JavaScript实现拖拽 使用mousedown, mousemove, mouseup事件 mousedown事件触发后&#xff0c;开始拖拽 mousemove时&#xff0c;需要通过event.clientX和clientY获取拖拽位置&#xff0c;并实时更新位置 mouseup时&#xff0c;拖拽结束 <!DOCTYPE html> <html lang&q…

NFS网络共享存储服务技术攻略

目录 一.NFS 1.定义 2.特点 3.原理 二.服务端NFS配置文件 1.主配置文件 2.文件格式 3.相关命令 三.实验&#xff1a;NFS共享存储服务配置 1.服务端安装nfs-utils和rpcbind软件包 2.服务端新建共享目录给权限 3.服务端修改配置文件/etc/exports 4.服务端关闭防火墙…

C#开源免费的Blazor图表库

前言 今天分享一款基于ApexCharts.js封装的、C#开源免费的Blazor图表库&#xff1a;Blazor-ApexCharts。 10款值得推荐的Blazor UI组件库 全面的ASP.NET Core Blazor简介和快速入门 ApexCharts.js介绍 ApexCharts.js开源地址&#xff1a;GitHub - apexcharts/apexcharts.js:…

python.24.1.16函数

python自带函数 自定义函数 参数的使用

Java工具类——json字符串格式化处理

在我们拿到一团未经格式化的json字符串时&#xff0c;非常不方便查看&#xff0c;比如这样 {"APP_HEAD": {"TOTAL_NUM": "-1","PGUP_OR_PGDN": "0"},"SYS_HEAD": {"RET": [{"RET_CODE": &qu…

如何做用户分层和标签体系

“活动作了一场接一场&#xff0c;简直要累死了&#xff0c;拉进来的客户也没有多少&#xff0c;投入产出完全不成比例&#xff0c;怎么办&#xff1f;“ “有那么多注册用户&#xff0c;但是GMV怎么才这么点&#xff0c;他们怎么不买啊&#xff0c;难道都是羊毛党&#xff1f;…

使用python计算两个日期之前的相差天数,周数

在Python中&#xff0c;你可以使用datetime模块来计算两个日期之间相差的天数和周数。示例代码&#xff1a; from datetime import datetime# 定义两个日期字符串 date_string1 2023-01-01 date_string2 2023-03-01# 将日期字符串转换为datetime对象 date_format %Y-%m-%d …

el-select中多选回显数据后没法重新选择和更改

<el-form-item label"展示内容" prop"videoId"><el-select class"modal-input" multiple v-model"form.videoId"><el-optionclass"modal-input"v-for"(item) in videoIdTypes":key"item.id&q…

JAVA代码学习(先识)

2023年将会持续于B站、CSDN等各大平台更新&#xff0c;可加入粉丝群与博主交流:838681355&#xff0c;为了老板大G共同努力。 【商务合作请私信或进群联系群主】 环境变量设置 a. 下载安装包 因为Java程序必须运行在JVM之上&#xff0c;所以&#xff0c;第一件事情就是安装J…

Java面试题116-125

116、JSP和Servlet有哪些相同点和不同点&#xff0c;他们之间的联系是什么&#xff1f; JSP是Servlet技术的扩展&#xff0c;本质上是Servlet的简易方式&#xff0c;更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于&#xff0c;Ser…

2019年认证杯SPSSPRO杯数学建模D题(第二阶段)5G时代引发的道路规划革命全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 D题 5G时代引发的道路规划革命 原题再现&#xff1a; 忙着回家或上班的司机们都知道交通堵塞既浪费时间又浪费燃料&#xff0c;甚至有的时候会带来情绪上的巨大影响&#xff0c;引发一系列的交通问题。据报道&#xff0c;每年交通拥堵使得美国…

uniapp+vue3面试纪要

uniappvue3面试纪要 uniapp 1.uniapp的生命周期 应用生命周期 onLaunch&#xff1a;应用程序启动时触发&#xff0c;仅在应用程序第一次启动时触发。 onShow&#xff1a;应用程序进入前台时触发&#xff0c;可以获取到应用程序被打开的方式和场景值。 onHide&#xff1a;应用…

【图形学】直线光栅化算法(DDA算法和Bresenham算法)

在数学上,直线就是由无穷多个点组成的, 在计算机屏幕显示的话, 需要做一些处理,对于光栅显示器&#xff0c;就是用有限多个点去逼近直线, 我们需要知道每一个像素点的坐标(都是整数) 数学上直线的方程如下 y k x b ykxb ykxb&#xff0c;给定直线的起点坐标 P 0 ( x 0 , y…

Spring Task 任务调度工具

大家好我是苏麟 , 今天聊聊Spring Task 任务调度工具 Spring Task Spring Task 是Spring框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑。 定位&#xff1a;定时任务框架 作用&#xff1a;定时自动执行某段Java代码 什么是定时任务 ? 通过时…

用python实现调用nosql

要使用Python调用NoSQL数据库&#xff0c;您需要使用适当的Python库。以下是使用Python调用MongoDB和Redis两个流行的NoSQL数据库的示例&#xff1a; 调用MongoDB 要使用Python调用MongoDB&#xff0c;您需要安装pymongo库。您可以使用以下命令在终端或命令提示符中安装它&…