缓存穿透、缓存击穿、缓存雪崩

简介: 缓存穿透、缓存击穿、缓存雪崩

①. 缓存穿透

1>. 缓存穿透


  • ①. 问题的产生:缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id 为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据 库压力过大。如下面这段代码就存在缓存穿透的问题


  • ②. 如下代码会产生缓存穿透

image.png


  • ③. 解决方案:


三点解决方案:

(1).接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;

(2).从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为 key-0。这样可以防止攻击用户反复用同一个id暴力攻击。代码举例:

image.png

(3).使用缓存预热

缓存预热就是将数据提前加入到缓存中,当数据发生变更,再将最新的数据更新到缓 存


②. 缓存击穿


2>. 缓存击穿


  • ①. 问题的产生:缓存击穿是指缓存中没有但数据库中有的数据。这时由于并发用户特别多,同时读 缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压 力


  • ②. 以下代码可能会产生缓存击穿:

image.png


  • ③. 解决方案:


解决方案:

(1).设置热点数据永远不过期

(2).缓存预热


③. 缓存雪崩


3>. 缓存雪崩


  • ①. 问题的产生:缓存雪崩是指缓存数据大批量到过期时间,而查询数据量巨大,引起数据库压力过 大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同 数据都过期了,很多数据都查不到从而查数据库


  • ②. 解决方案:
缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生
设置热点数据永远不过期。
使用缓存预热


相关文章
|
1月前
|
缓存 数据库
15- 什么是缓存击穿 ? 怎么解决 ?
`# 缓存击穿简介及解决方案` 缓存击穿是指大量请求同时命中已过期的缓存,导致数据库压力骤增。解决方法包括:1) 预热热点数据;2) 设置热点数据永不过期;3) 使用加锁或限流策略。
49 4
|
2天前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文介绍了缓存穿透问题在分布式系统和缓存应用中的严重性,当请求的数据在缓存和数据库都不存在时,可能导致数据库崩溃。为解决此问题,提出了五种策略:接口层增加校验、缓存空值、使用布隆过滤器、数据库查询优化和加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统稳定性的影响。
47 3
|
2天前
|
缓存 NoSQL 中间件
中间件缓存击穿和缓存雪崩
中间件缓存击穿和缓存雪崩
10 3
|
2天前
|
缓存 NoSQL 搜索推荐
Redis缓存雪崩穿透等解决方案
本文讨论了缓存使用中可能出现的问题及其解决方案。首先,缓存穿透是指查询数据库中不存在的数据,导致请求频繁到达数据库。解决方法包括数据校验、缓存空值和使用BloomFilter。其次,缓存击穿是大量请求同一失效缓存项,可采取监控、限流或加锁策略。再者,缓存雪崩是大量缓存同时失效,引发数据库压力。应对措施是避免同一失效时间,分散缓存过期。接着,文章介绍了Spring Boot中Redis缓存的配置,包括缓存null值以防止穿透,并展示了自定义缓存过期时间的实现,以避免雪崩效应。最后,提供了在`application.yml`中配置不同缓存项的个性化过期时间的方法。
|
7天前
|
缓存 监控 数据库
分布式系统中缓存穿透问题与解决方案
在分布式系统中,缓存技术被广泛应用以提高系统性能和响应速度。然而,缓存穿透是一个常见而严重的问题,特别是在面对大规模请求时。本文将深入探讨缓存穿透的原因、影响以及一些有效的解决方案,以确保系统在面对这一问题时能够保持稳定和高效。
33 13
|
11天前
|
缓存 NoSQL Java
springboot业务开发--springboot集成redis解决缓存雪崩穿透问题
该文介绍了缓存使用中可能出现的三个问题及解决方案:缓存穿透、缓存击穿和缓存雪崩。为防止缓存穿透,可校验请求数据并缓存空值;缓存击穿可采用限流、热点数据预加载或加锁策略;缓存雪崩则需避免同一时间大量缓存失效,可设置随机过期时间。文章还提及了Spring Boot中Redis缓存的配置,包括缓存null值、使用前缀和自定义过期时间,并提供了改造代码以实现缓存到期时间的个性化设置。
|
11天前
|
缓存 NoSQL 搜索推荐
Redis缓存雪崩穿透等解决方案
本文讨论了缓存使用中的三个问题:缓存穿透、缓存击穿和缓存雪崩。为解决这些问题,提出了相应策略。对于缓存穿透,建议数据校验和缓存空值;缓存击穿可采用监控扩容、服务限流或加锁机制;缓存雪崩则需避免大量缓存同时过期,可设置随机过期时间。此外,文章还介绍了Spring Boot中Redis缓存配置,包括全局设置及自定义缓存过期时间的方法。
|
16天前
|
缓存 NoSQL 算法
Redis入门到通过之解决Redis缓存击穿、缓存穿透、缓存雪崩
Redis入门到通过之解决Redis缓存击穿、缓存穿透、缓存雪崩
20 0
|
16天前
|
缓存 NoSQL 算法
Redis 解决缓存雪崩 缓存穿透 缓存击穿(Redis使用必看)
Redis 解决缓存雪崩 缓存穿透 缓存击穿(Redis使用必看)
28 1
|
18天前
|
缓存 数据库 UED
软件体系结构 - 缓存技术(9)缓存穿透
【4月更文挑战第20天】软件体系结构 - 缓存技术(9)缓存穿透
75 13