MST

星途 面试题库

面试题:缓存设计之中等难度:简述常见缓存更新策略及适用场景

请简述三种常见的缓存更新策略(如Cache - Aside、Write - Through、Write - Behind Caching),并举例说明它们分别适用于哪些后端开发场景。
49.7万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

Cache - Aside(旁路缓存)

  • 策略简述:应用程序先从缓存中读取数据。如果缓存命中,直接返回数据;若缓存未命中,从数据库读取数据,然后将数据写入缓存,再返回给应用程序。写操作时,先更新数据库,然后使缓存失效(而不是更新缓存)。这样可确保数据库是数据源的唯一真相,避免缓存与数据库不一致。
  • 适用场景:适用于读多写少的场景,比如电商商品详情页展示。商品信息更新频率低,但大量用户会频繁读取商品详情,使用Cache - Aside可大大提升读取性能,同时通过写操作使缓存失效,保证数据最终一致性。

Write - Through(直写式缓存)

  • 策略简述:当有数据更新时,同时更新数据库和缓存,保证两者数据实时一致。读操作和Cache - Aside类似,先查缓存,命中则返回,未命中从数据库读取并写入缓存。
  • 适用场景:适用于对数据一致性要求极高的场景,如银行账户余额信息。每一次余额变动都必须保证数据库和缓存数据一致,不允许出现短暂的数据不一致情况,否则可能导致金融风险。

Write - Behind Caching(回写式缓存)

  • 策略简述:写操作时,只更新缓存,然后将更新操作异步批量写入数据库。读操作先从缓存读取,缓存未命中时从数据库读取并写入缓存。这种策略可显著提升写操作性能,但存在缓存数据丢失和数据不一致风险,因为在异步写入数据库前若缓存故障,数据可能丢失。
  • 适用场景:适用于写操作性能要求高,且能容忍一定时间数据不一致的场景,如日志记录。日志写入主要关注写入速度,对实时一致性要求不高,使用Write - Behind Caching可快速记录日志,再异步批量写入持久化存储。