2024-05-02  阅读(534)
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/1108890090

回答

缓存击穿属于缓存雪崩的子集,它是指缓存中的某个热点 key 在缓存中不存在时(比如过期),此时大量请求访问该热点 key,由于无法命中缓存,会直接访问数据库,导致数据库压力剧增,严重时甚至会让数据库奔溃。

缓存击穿的关键点在于单一热点缓存数据失效,瞬间海量请求压垮数据库。

应对缓存击穿的方案和应对缓存雪崩一样,可以采取如下两种方案:

  • 设置热点数据永不过期。对于一些访问频率极高的热点数据,我们设置它永不过期,如果有更新的话,就更新缓存数据。
  • 使用分布式锁。当业务线程在处理请求时,如果发现访问的数据不在缓存中时,就增加一个分布式锁,然后该业务线程去加载缓存,其他线程由于获取不到分布式锁会被阻塞。

具体方案请参考:什么是缓存雪崩 ?如何避免缓存雪崩?

  • 点赞