redis缓存雪崩、缓存击穿和缓存穿透是什么

发布时间:2022-11-15 09:32:07 作者:iii
来源:亿速云 阅读:107

这篇文章主要介绍了redis缓存雪崩、缓存击穿和缓存穿透是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis缓存雪崩、缓存击穿和缓存穿透是什么文章都会有所收获,下面我们一起来看看吧。

缓存雪崩

首先来看看缓存雪崩,缓存雪崩的概念就是:大量的请求没有在Redis缓存中得到处理,从而导致请求都涌入到数据库中,然后数据库的压力剧增。

引起缓存雪崩的原因可总结为2个:

先来看看第一个场景:缓存中大量的数据同时过期问题。

缓存中大量的数据同时过期

结合图例来看,就是大量的数据在同一时间过期,然后此时又有很多的请求要读取这些数据。当然就会发生缓存雪崩,从而导致数据库压力剧增了。

redis缓存雪崩、缓存击穿和缓存穿透是什么

大量数据同时过期的解决方案

应对大量数据同时过期问题,通常有2种方案:

redis缓存雪崩、缓存击穿和缓存穿透是什么

看完了大量数据同时过期的情况,再来看看Redis缓存实例故障的情况。

Redis缓存实例故障导致的缓存雪崩

这种情况下,Redis无法处理读请求了,请求自然就怼到数据库了。

通常来说,应对这种情况,我们也有2种方式:

服务熔断,也就是当Redis发生故障时,暂停请求对缓存系统的访问。等到Redis恢复正常了再打开请求访问。

这种方式我们需要对Redis或数据库的运行状态进行监控,比如MySQL的负载压力、Redis的CPU使用率、内存使用率及QPS等。当发现Redis实例缓存雪崩了,就暂停服务。

这种情况能有效放置大量请求对数据库造成压力。但是会暂停请求访问,对业务端的影响很大。

redis缓存雪崩、缓存击穿和缓存穿透是什么

因此,为了减少对业务端的影响,我们可以使用请求限流方式,控制QPS,避免过多的请求怼到数据库去。比如下面图例,本身有2万每秒的请求,但因为Redis故障宕机了。我们限流操作将qps降到2千每秒,数据库处理2000的qps还是没问题的。

redis缓存雪崩、缓存击穿和缓存穿透是什么

缓存击穿

缓存击穿就是指个别访问频繁的热点数据无法缓存命中,然后请求都涌入到数据库中。它经常会在热点数据过期时发生。

redis缓存雪崩、缓存击穿和缓存穿透是什么

对于缓存击穿问题,我们知道这些都是被访问非常频繁的热点数据,处理方式就简单粗暴了,直接不设置过期时间了。等热点数据不频繁访问再手动处理即可。

缓存穿透

缓存雪崩有些特别,它是指要访问的数据既不在Redis缓存,也不在数据库中。当大量请求进到系统时,Redis和数据库都会有巨大压力。

redis缓存雪崩、缓存击穿和缓存穿透是什么

导致缓存穿透的原因通常有2种:

对于缓存穿透的情况,解决方案可以参考下面几种:

第一点和第三点比较容易理解,这里就不展开描述。我们重点来看看第二点:布隆过滤器。

布隆过滤器

布隆过滤器主要用于判断一个元素是否在一个集合中。它是由一个固定大小的二进制向量(可理解成默认为0的bit数组)和一系列的映射函数组成的。

我们首先来看看布隆过滤器是如何标记一个数据a的:

通过这3个步骤,数据标记就完成了。然后要查询数据在不在的时候是这样做的:

结合下图来看,基本原理就是这样。

redis缓存雪崩、缓存击穿和缓存穿透是什么

关于“redis缓存雪崩、缓存击穿和缓存穿透是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“redis缓存雪崩、缓存击穿和缓存穿透是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案
  2. 缓存穿透,缓存击穿,缓存雪崩解决方案分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis

上一篇:Vue如何实现语音播报

下一篇:PHP会话怎么实现在30分钟后被销毁

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》