Redis中的缓存穿透、缓存击穿、缓存雪崩(面试版)

embedded/2024/9/24 6:29:23/

缓存穿透

缓存穿透:查询一个不存在的数据,在mysql数据库中查询不到数据也不会写入缓存,导致每次请求都查询数据库,增加数据库负载。

解决办法:

1、缓存空值:将数据库中不存在的结果(例如空值)也缓存起来,并设置一个较短的过期时间,避免频繁查询数据库

2、使用布隆过滤器:使用布隆过滤器来快速判断一个请求的数据是否存在,如果布隆过滤器判断数据不存在,则直接返回,避免查询数据库。

  • 布隆过滤器原理:

3、防止非法请求:检查非法请求,封禁其IP以及账号

缓存击穿

缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好对这个key有大量的请求过来,这些并发的请求可能会瞬间把DB压垮

解决办法:

1)加互斥锁:保证同一时间只有一个请求来构建缓存,跟缓存雪崩相同。

2)热点数据永不过期:不要给热点数据设置过期时间,在后台异步更新缓存

缓存雪崩

缓存雪崩是指在某个时间点,大量缓存同时失效或被清空,导致大量请求到达数据库或后端系统,造成系统负载激增,甚至引发系统崩溃,这通常是由于缓存中的大量数据在同一时间失效引起的。

解决办法:

1、设置过期时间随机化:设置缓存的过期时间,加上一个随机值,避免同一时间大量缓存失效。

2、使用多级缓存:引入多级缓存,如Guava或Caffeine作为一级缓存redis作为二级缓存

3、构建集群:构建多个 Redis 集群提高服务的可用性


http://www.ppmy.cn/embedded/101809.html

相关文章

免费批量自动校正图片、PDF文档方向工具

功能介绍:批量自动识别图片和PDF文档页面方向,并校正为正确阅读方向(非倾斜纠偏) jpg校正演示 #修复exif信息导致的jpg图像显示和实际旋转不一致问题 #增加图像DPI选项,优先原图或者固定DPI,但这些只会对产生旋转的图…

4. Java中的ArrayList和LinkedList有什么区别?各自的优缺点是什么?在什么场景下选择使用它们?

​​​​ArrayList 和 LinkedList 是 Java 中两个常用的 List 接口实现类,它们都可以用来存储有序的元素,但在底层实现和性能特征上有显著的区别。 1. 内部实现 ArrayList: ArrayList 底层基于动态数组实现。它维护一个可调整大小的数组&…

鸿蒙高级开发者认证题库

鸿蒙高级开发者认证题库 1.作依次调用如下方法4次启动U 为应用开发者,你使用hiAppEvent订阅了崩溃事件。应用崩溃后,从onReceive接口返回的AppEventInfo中()属性可以获取崩溃调用信息。 A.eventType B. name C. domain D. Params 2.某个应用开发了…

代码随想录算法训练营_day24

题目信息 93. 复原 IP 地址 题目链接: https://leetcode.cn/problems/restore-ip-addresses/description/ 题目描述: 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 . 分隔。 例如…

IP代理可以做爬虫吗?探讨其可行性与相应实践

IP代理在网络爬虫中的应用 在网络爬虫的世界里,IP代理就像是爬虫的“隐形斗篷”,帮助它们在获取数据的过程中隐藏真实身份,避免被目标网站识别和封禁。那么,IP代理到底能否用于爬虫呢?答案是肯定的!接下来…

开放大世界的数据管理

经过前面几个章节的介绍,开放世界的数据管理就已经初具雏形了。实际上,开放世界数据最麻烦的,就是各种地图渲染数据。如果地图渲染数据解决了,逻辑数据处理起来也是相对容易的。所以这里讲的,核心也是在地图渲染数据。…

Stable Diffusion【XL Lora】推荐!AI助力服装设计,让服装拆分设计就是这么高效!

今天给大家介绍一个服装饰品分类背景的基于SDXL的Lora模型:分类背景 XUER。该模型是由作者(B站绪儿已成精)炼制,非常适合饰品服装分类背景。绪儿大佬其实推出了很多非常棒的模型,比如之前非常受大家喜欢的敦煌飞天、超…

【Python机器学习】NLP概述——聊天机器人的自然语言流水线

构建对话引擎或者聊天机器人所需的NLP流水线类似于某些问答系统。 聊天机器人需要4个处理阶段和一个数据库来维护过去语句和回复的记录。这4个处理阶段中的每个阶段都可以包含一个或多个并行或串行工作的处理算法。如下图所示: 1、解析:从自然语言文本中…