0
点赞
收藏
分享

微信扫一扫

你不知道的redis二-缓存穿透和缓存雪崩问题及解决方案,Java后端开发笔试题

肉肉七七 2022-04-13 阅读 102

零基础如何学习Java?

首先,你要明白一点,Java入门不难!

无论你是从事哪个行业,兴趣一定是最好的老师,也是你学习的动力。

学习方式1:自学

自学模式其实我个人不建议绝大部分的人选择,因为自学是需要比较强的自制力以及约束力,例如今天计划自学三小时,但因为一个电影新出,就决定先看完电影再说,一个游戏邀约,就决定先打一把游戏再说,一个“今天已经很累了”,就放弃了这一天的学习计划,而很不凑巧的是,现在大部分年轻人都是如此。所以自学的人往往花费很多时间成本,最后达到的效果或许也不是很满意。

但是如果你一定要选择自学,那我建议你按照这份**《Java零基础全栈开发年薪20W+》知识大纲**去学习,应对你入行找工作已经足够了,其他更多的Java技术栈可以通过经验积累!如果你需要这份学习路线以及学习笔记,文末即可免费领取!

2、缓存空对象

3、布隆过滤器

三、缓存击穿问题

解决方式

1、设置热点数据永远不过期。

2、互斥锁

四、缓存雪崩

解决方案

1、redis高可用

2、过期时间分布均匀

五、几种故障对比


一、缓存使用方式

========

1、客户端请求业务系统

2、业务系统首先判断redis是否存在数据

3、如果数据存在redis则返回给业务系统

4、业务系统返回给客户端

5、如果redis不存在数据,则业务服务区数据库中查询数据

6、然后将数据库中的数据返回给客户端

这个使用方法使我们在业务系统中再常见不过的方式。但是在高并发场景下,他们会存在什么样的问题呢?

二、缓存穿透问题

============

缓存穿透是指存在用户不断地访问缓存和数据库中都没有的数据,从而导致数据库压力过大,从而可能引发服务处理缓慢甚至数据库崩溃等问题。如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者。

解决方式


解决方法很多,一般有以下几种方式

1、接口层校验

接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截,实现比较简单,但是只能拦截部分请求;

2、缓存空对象

从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。 这样可以防止攻击用户反复用同一个id暴力攻击,保护了后端数据源;

存在问题

1、如果空值能够被缓存起来,这就意味着缓存需要更多的空间存储更多的键,因为这当中可能会有很多的空值的键;

2、即使对空值设置了过期时间,还是会存在缓存层和存储层的数据会有一段时间窗口的不一致,这对于需要保持一致性的业务会有影响。

3、布隆过滤器

布隆过滤器是一个bit向量或者bit,如果我们要映射一个值到布隆过滤器中,我们要使用多个不同的哈希函数生成多个哈希值,并将每个生成的哈希值指向的bit位设置为1。

可以看到,不同的词对应的bit位置可能相同,当词很多的情况时,可能大部分bit位置都是1,这时查询商品1可能对应的位置都为1,只能说明商品1一词可能存在,不是一定存在的。

布隆过滤器的巨大用处就是,能够迅速判断一个元素是否在一个集合中。命中的可能存在,但不命中的话肯定不存在!

如Gava给我们提供的布隆过滤器,以下程序实现了生成1000000数据进行初始化布隆过滤器,过滤器误判率为3%,然后故意取10000个不存在布隆过滤器里的值,输出误判数量为300.

public class BloomFilterTest {

private static int size = 1000000;

private static BloomFilter bloomFilter = BloomFilter.create(Funnels.integerFunnel(), size, 0.03);

public static void main(String[] args) {

for (int i = 0; i < size; i++) {

《一线大厂Java面试真题解析+Java核心总结学习笔记+最新全套讲解视频+实战项目源码》开源

总结

在清楚了各个大厂的面试重点之后,就能很好的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

的提高你刷题以及面试准备的效率,接下来小编也为大家准备了最新的互联网大厂资料。

[外链图片转存中…(img-Y4SlyKaY-1649670778223)]

[外链图片转存中…(img-PacBQ9J3-1649670778224)]

[外链图片转存中…(img-J02hDYqt-1649670778224)]

[外链图片转存中…(img-TZzVVgjK-1649670778225)]

举报

相关推荐

0 条评论