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

5 篇文章 0 订阅
4 篇文章 0 订阅

        作者处于学习阶段,刚刚完成redis的学习,作为学生,我会用更通俗的说法,来叙述自己对redis的了解。愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正。来帮助大家更加深入的了解redis。

一、

        1 何为缓存穿透?

        我们平时的访问顺序是,先查询缓存是否存有数据。如果有,则展示。如果没有则查询数据库,查询到数据后展示,并储存到缓存当中。

        当访问缓存时,会携带一个key值。当key值不存在时,就会访问数据库。但是本身数据库就不会存放该key值,就会无限访问数据库。可能会导致数据库崩塌。比如:根据用户id查询用户信息,但是该id值不存在,黑客就会根据这一点,直接穿透你的缓存,无限制的访问数据库,大量的查询数据库,导致数据库崩塌。

        2 缓存穿透图解

        3 解决方案

        实际情况下,我们发现有不合法的url多次访问后,我们首页要做的解决方法,肯定是报警。但是万一发现的晚了,也可能会造成不可挽回的后果。所以我们一定要有自己的解决方案,做一定的处理方案。

        3.1 对空值缓存

        就是当在数据库查不到数据时,也会对其进行缓存。一般设置过期时间会比较短。但是这种一般都是临时处理。

        3.2 设置白名单

        将可以存在的key存到bitmap中。当访问时,若key在bitmap中,则存在。不在bitmap中,则不存在。

        3.3 实时监控

        就是当服务器出现多次不合法的url访问后,运维人员直接将对应用户加入到黑名单中,让其不再能够发送请求。

二、缓存击穿

        1 何为缓存击穿?

        当缓存中某个数据到达了过期时间,并且该Key值成为了这段时间非常热门的话题。当大量的请求高并发的查询该key值时,都会查询不到该数据。都会查询到数据库当中,原本数据库很清闲,突然的压力和高并发,就会导致数据库的崩溃,但是redis缓存没有出现异常。

        举例:在EDG夺冠时,就会有大量的词条。如EDG夺冠,如果此时缓存过期,就会导致无法查询到数据,反而去大量访问数据库,导致数据库崩坏。

        2 缓存击穿图解

        

        3 缓存击穿的解决方案

        ①预先设置热门数据

        在redis高访问前,预判到会出现的热门数据,增加其过期时长。如提前观看LOL全球总感觉赛、偷偷跟踪明星发现其八卦事件、提前为自己服务器的数据库算一卦,当然上述是开玩笑所说,只是给大家的学习增加乐趣。

        ②实时监测

        检测热门的数据,将其过期时间设长。

        ③使用锁

        使用锁的话,需要图片解释才能够解释全面。该图片为高并发情况下排它锁的使用方式。

三、缓存雪崩

        1 何为缓存雪崩

        当缓存中出现大量数据过期,而此时,访问过来的请求全部访问这些过期数据。就会有大量的请求到达数据库,导致数据库压力瞬间增大,导致数据库被压垮,甚至压垮整台服务器。可能有人会有疑惑,为何数据库压垮会影响到整个服务器,其实数据库的操作就是I/O操作,也会涉及到整台服务器。

        2 缓存雪崩图解

        3 缓存雪崩的解决方案

        ①设置多层缓存,就是不仅仅放jedis一层缓存,多放,就能起到缓冲和保护的作用。

        ②用锁,但是众所周知,只要用锁,就会降低效率。可能会使大量操作无法进行,无法应对高并发的场景。

        ③设置过期更新缓存,就是过期后实时的更新。有人可能会说,那直接设置永久不就可以了吗?首先这是一个很危险的过程。要考虑到内存问题,而且永久后,不再像数据库要数据,数据库更新后,缓存中还是曾经的数据。

        ④缓存失效时间分散开,将其设置的过期时间不同,就不会出现同时过期大量数据的现象。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱分享的小邓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值