MST
星途 面试题库

面试题:缓存设计之高并发下缓存更新策略

在高并发系统中,当数据发生变化时,为了提升缓存命中率,有哪些常见的缓存更新策略,并且说明每种策略的优缺点。
27.4万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存更新策略及优缺点

  1. Cache-Aside(旁路缓存)策略
    • 更新方式:应用程序先更新数据库,再删除缓存。
    • 优点
      • 实现简单,在大多数场景下比较适用。
      • 读操作性能较高,因为读时先查缓存,缓存命中直接返回,只有缓存未命中才查数据库。
    • 缺点
      • 存在数据不一致窗口,在更新数据库和删除缓存这两个操作之间,如果有读请求进来,会读到旧数据。
      • 高并发下,删除缓存失败可能导致长时间的数据不一致。
  2. Read-Through(读穿)策略
    • 更新方式:应用程序更新数据库,由缓存加载器负责从数据库加载最新数据到缓存。
    • 优点
      • 保证缓存中的数据始终是最新的,一致性较好。
      • 读操作逻辑相对清晰,缓存加载由专门组件负责。
    • 缺点
      • 实现复杂度较高,需要引入缓存加载器等额外组件。
      • 缓存加载过程可能带来一定延迟,影响读性能。
  3. Write-Through(写穿)策略
    • 更新方式:应用程序更新数据时,同时更新数据库和缓存。
    • 优点
      • 数据一致性强,因为数据库和缓存同时更新。
      • 读操作始终能获取到最新数据,缓存命中率高。
    • 缺点
      • 写操作性能较低,因为要同时操作数据库和缓存,增加了写操作的耗时。
      • 数据库和缓存任何一方更新失败都可能导致数据不一致,维护成本高。
  4. Write-Behind(写后)策略
    • 更新方式:应用程序更新数据时,先更新缓存,然后由缓存异步批量更新数据库。
    • 优点
      • 写操作性能高,因为只需操作缓存,异步更新数据库不影响应用程序响应。
      • 适合高并发写场景,批量更新数据库能减少数据库压力。
    • 缺点
      • 数据一致性较差,存在缓存和数据库数据不一致的时间窗口,尤其是在缓存更新成功但异步更新数据库失败时。
      • 实现复杂,需要处理异步任务、重试机制等以确保数据最终一致性。