来说说缓存穿透、缓存击穿、缓存雪崩都是什么?怎么解决?

前言

看到题目就知道了,这又是我在面试中遇到的,最近面试,把我的博文质量感觉都提上来了。面一次试感觉够我总结一周的,但还是每次都能遇到知识盲点,那以后就当面试总结是个扫盲的过程吧。

缓存穿透

面试的时候就被问到了这个问题,具体描述就是,正常的请求都是先请求到缓存(就当我们的缓存是Redis吧),如果缓存中存在数据,就直接返回,如果缓存中不存在请求的数据,就查询数据库,然后将查询到的数据再放到缓存中。

那么如果现在有一堆的请求,在缓存中没有,数据库中也没有,怎么办?这种垃圾请求还特别多,而且因为是在数据库没有查询到,所以也不会被放到缓存中,这就是缓存穿透的场景。

大量的这种请求,最终会导致数据库压力剧增,最终就会将数据打垮,若是这个数据库是核心数据库,那么其他所有依赖这个库的接口都会报错。

来说说缓存穿透、缓存击穿、缓存雪崩都是什么?怎么解决?_第1张图片

例如,每次请求的参数都是id,而id是我们数据库里的自增主键,但是请求过来的参数要么是-1这种,要么就是特别大的一个数,反正就是不存在的数据。

解决缓存穿透

那么如何解决缓存穿透呢?

  • 首先最基本的就是要做参数校验,非法的参数就直接return,连缓存层都到不了。
  • <

你可能感兴趣的:(后端,缓存,面试,职场和发展,java,redis)