美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

  您的位置:首页软件编程java→ JAVA 缓存击穿 缓存穿透 缓存雪崩

  更新时间:2021年11月18日 16:03:53 作者:KnightHONG

  当服务器QPS比较高,并且对数据的实时性要求不高时,往往会接入缓存以达到快速Response、降低数据库压力的作用,常用来做缓存的中间件如Redis等。本文主要介绍了JAVA面试时常考的缓存击穿、穿透、雪崩场景三者区别,有兴趣的小伙伴可以看一下

  前端发起一个请求,经历过三次握手后连接到服务器,想要获取相应的数据,那么服务器接入了缓存中间件后,从接收到Request到最后的Response,到底是怎样的一个流程呢?以下探讨忽略掉参数校验等逻辑,直接讲最核心的链路。

  一个请求Request过来,服务器首先和缓存中间件建立连接,传输对应key到缓存中间件中获取相对应的数据,服务器拿到返回的结果后,判断返回的结果是否有数据,如果有数据,免费美国主机则返回从缓存中拿到的结果。如果缓存中间件中没有数据,则建立数据库连接,访问数据库服务器,按照相应逻辑拿到返回结果,判断结果中是否有数据,如果有则返回对应数据,如果没有则按照业务场景要求,返回对应结果(一般为null或者new一个空对象)。

美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

   什么是缓存击穿?通俗的讲指的是缓存中没有数据,但数据库中有数据的场景。那为什么缓存中会没有数据呢?一般是由于设置了缓存时间导致缓存过期,所以没有数据。那缓存找不到数据去数据库查询就好了呀,为啥又叫击穿?是因为要查询这个key对应的数据是一个热点数据,并发访问的量大,同时去查询数据库,导致数据库压力骤增,严重会打崩数据库。

美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

  1、如果是不改变的数据,如一些常量值,则可以设置对应热点key永不过期。

  缓存穿透指的是缓存中间件和数据库都没有对应的数据,但是不断接收到请求获取该key的数据,导致数据库压力过大,甚至崩溃。

美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

  1、访问数据库也拿不到数据后,可以按照具体业务要求,在缓存层加上一个该key的值,设置一个过期时间,比如10s或者1min等。美国服务器地址那为什么不设不过期呢?第一个是说因为该key可能有对应的业务含义,有可能只是该时间点还没有数据,所以不能设置不过期;第二个是说如果真的是恶意访问,那么可能过一段时间就没有类似请求,那么我们没有必要一直把该数据留在缓存里。

  2、增加校验,如果是不符合预期的请求可以直接过滤,比如说缓存中存放了用户信息,对应的缓存key是和id有关系,那么如果你的id都是大于等于0的,免费国外服务器美国服务器地址对于小于0的id可以直接做过滤。

  缓存雪崩指的是在同一个时间点,缓存中的大批量数据过期,并且还都是热点数据,导致同一时间并发压力都打到了数据库中,导致数据库压力骤增,甚至宕机。有的人就会问了,这和缓存击穿不是一个意思吗?缓存击穿指的是并发查询某条热点key数据,缓存雪崩指的是大批量。出现场景之一是在某些核心页面,该页面的内容都放入了缓存,并且都设置了同样的缓存时间。

美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别

  2、在给每个热点key设置过期时间时,加上一个随机值,使得热点数据离散开来,不会同一时间大批量过期。韩国服务器商

  以上就是JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别的详细内容,更多关于JAVA 的资料请关注脚本之家其它相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

天眼测评网_VPS测评推荐网站 国外VPS推荐 美国服务器地址JAVA面试题之缓存击穿、缓存穿透、缓存雪崩的三者区别 https://www.tyidc.com.cn/17888.html

常见问题

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务