黑马点评项目实战(三)——缓存击穿

缓存击穿

缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问在瞬间给数据库带来巨大的冲击。

image-20250215165622778

常见的解决方案有两种:互斥锁和逻辑过期。

互斥锁

image-20250215165828415

优点:

  • 没有额外的内存消耗
  • 保证一致性
  • 实现简单

缺点:

  • 线程需要等待,性能受影响
  • 可能有死锁风险

业务实现:

关于如何加锁,这里使用redis的setmx(set if absent)来作为锁。

image-20250215170841707

逻辑过期

image-20250215170304356

优点:

  • 线程无需等待,性能较好

缺点:

  • 不保证一致性
  • 有额外内存消耗
  • 实现复杂

业务实现:

image-20250215173044007