MST
星途 面试题库

面试题:缓存设计之缓存数据过期机制的优化策略

在高并发场景下,缓存数据过期可能会导致缓存击穿问题。针对这种情况,阐述你会采用哪些优化策略来避免大量请求直接穿透到后端数据库?并说明每种策略的优缺点。
32.6万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

1. 互斥锁策略

  • 实现方式:当缓存过期时,先获取一个互斥锁(如分布式锁),只有获取到锁的请求才去查询数据库并更新缓存,其他请求等待锁释放后从缓存获取数据。
  • 优点:简单易懂,能有效防止大量请求同时穿透到数据库。
  • 缺点:引入了锁机制,增加了系统复杂度和性能开销。高并发下,锁竞争激烈,可能导致系统性能下降。

2. 热点数据永不过期策略

  • 实现方式:对于热点数据,不设置过期时间,由后台定时任务或者数据库变更通知机制去更新缓存数据。
  • 优点:彻底避免了缓存过期导致的缓存击穿问题,保证高并发下热点数据的访问性能。
  • 缺点:缓存数据可能长时间不一致,直到后台更新缓存。而且后台更新逻辑实现复杂,可能出现数据更新不及时等问题。

3. 二级缓存策略

  • 实现方式:设置主缓存和副缓存,主缓存设置较短过期时间,副缓存设置较长过期时间。主缓存过期时,先从副缓存获取数据,同时后台异步更新主缓存。
  • 优点:能在一定程度上避免缓存击穿,减少对数据库的直接访问。而且不引入锁机制,对系统性能影响相对较小。
  • 缺点:增加了缓存维护成本,需要管理两级缓存的一致性,并且副缓存数据也存在一定时间的不一致性。

4. 缓存预热策略

  • 实现方式:系统启动时或在流量高峰来临前,提前将热点数据加载到缓存中,并设置合理的过期时间。
  • 优点:有效避免在高并发场景下因缓存过期导致的缓存击穿问题,提高系统的初始响应速度。
  • 缺点:需要提前预估热点数据,若预估不准确,可能导致部分数据缓存未命中。并且缓存预热时间和方式需要根据业务场景仔细调整,否则可能影响正常业务。