面经-缓存穿透和缓存击穿有什么区别

117 阅读1分钟
  • 使用缓存就是为了减小数据库压力,让大部分的读请求都能落到缓存系统上。而只要请求穿过了缓存层,直接打到了数据库,我就把这个现象理解为缓存穿透
  • juejin.cn/post/712095…

造成原因:key失效,大量key同时过期,一直请求不存在的数据

解决:1.对于不存在的数据,同样设置一个特殊的value到缓存中,这样下次请求 缓存的时候还是可以命中缓存,即直接从缓存返回结果,不查询数据库

2.布隆过滤器做前置过滤,不存在的数据布隆过滤器一般都能够过滤掉,当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。 就不再向后端发送请求。

  • 热点key失效,高并发请求打到数据库,就是缓存击穿,缓存击穿可以理解成是缓存穿透的一种特殊情况

解决方法:1. 设置热点数据永远不过期。

2.会加互斥锁,让其他请求排队,等待第一个请求带回数据存入缓存,然后其他请求就直接去缓存里拿,保证数据库的安全可用