温馨提示×

温馨提示×

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

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

大数据中缓存穿透,缓存雪崩,缓存击穿以及解决办法是什么

发布时间:2021-12-06 11:02:37 来源:亿速云 阅读:197 作者:柒染 栏目:大数据

这期内容当中小编将会给大家带来有关大数据中缓存穿透,缓存雪崩,缓存击穿以及解决办法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

(1)缓存穿透:指的是操作直接穿过了缓存层面,直接到达db层面,从而称为缓存穿透。直接查询某一条不存在的数据,就会发生这种情况(其实还是要经过缓存层,只不过缓存层没有这条数据,就会发起db层面的操作)。

解决方案:

1. Bloom filter算法(布隆过滤器???)

2. 空值缓存: 一种比较简单的解决办法,在第一次查询完不存在的数据后,将该key与对应的空值也放入缓存中,只不过设定为较短的失效时间,例如几分钟,这样则可以应对短时间的大量的该key攻击,设置为较短的失效时间是因为该值可能业务无关,存在意义不大,且该次的查询也未必是攻击者发起,无过久存储的必要,故可以早点失效。

(2) 缓存雪崩:多个缓存数据设置的失效时间相同,在同一时间同时失效,大量系统请求从请求缓存变成请求数据库,造成数据库崩溃。

解决方案:

1. 交错失效时间(即更改数据缓存的有效期,建议设置成固定时间的随机时间,例如设置成3-5秒钟中间的任意时间)。

2. redis高可用

这个思想的含义是,既然redis有可能挂掉,那我多增设几台redis,这样一台挂掉之后其他的还可以继续工作,其实就是搭建的集群。

3.限流降级

这个解决方案的思想是,在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。

4. 数据预热

数据加热的含义就是在正式部署之前,我先把可能的数据先预先访问一遍,这样部分可能大量访问的数据就会加载到缓存中。在即将发生大并发访问前手动触发加载缓存不同的key,设置不同的过期时间,让缓存失效的时间点尽量均匀。

(3) 缓存击穿:缓存击穿实际上是缓存雪崩的一个特例,击穿与雪崩的区别即在于击穿是对于特定的热点数据来说,而雪崩是全部数据。(典型例子:微博的热点话题)。

解决方案:1. 二级缓存(参考链接)(阿里双十一流量缓存击穿解决办法)LRU-K算法

上述就是小编为大家分享的大数据中缓存穿透,缓存雪崩,缓存击穿以及解决办法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

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

AI