MST
星途 面试题库

面试题:缓存设计:金融交易系统中缓存数据一致性如何保证

在金融交易系统中,数据一致性至关重要。假设系统使用缓存来提升性能,当数据库数据发生变化时,你会采取哪些策略来保证缓存数据与数据库数据的一致性?请列举至少两种常见方法并简要阐述其优缺点。
38.4万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存更新策略

  1. Cache-Aside Pattern(旁路缓存模式)
    • 操作方式:应用程序在读取数据时,先从缓存中获取。如果缓存中没有(缓存缺失),则从数据库读取,然后将数据放入缓存。在更新数据时,先更新数据库,然后删除缓存。
    • 优点:实现简单,应用程序可以完全控制缓存和数据库的交互逻辑。对于读多写少的场景,性能较好,因为读操作不会频繁更新缓存。
    • 缺点:并发场景下可能出现数据不一致问题。例如,在高并发时,一个写操作更新了数据库但还未删除缓存,此时一个读操作读取到了旧的缓存数据。
  2. Write-Through Pattern(直写式缓存模式)
    • 操作方式:当数据发生变化时,应用程序同时更新数据库和缓存,保证两者数据实时一致。
    • 优点:数据一致性强,任何时候缓存和数据库的数据都是同步的。
    • 缺点:性能开销较大,每次写操作都需要同时操作数据库和缓存,可能成为系统性能瓶颈,尤其在高并发写场景下。
  3. Write-Behind Caching Pattern(回写式缓存模式)
    • 操作方式:应用程序在更新数据时,只更新缓存,标记缓存为脏数据。缓存系统在合适的时机(例如批量操作、空闲时段等)将脏数据批量写入数据库。
    • 优点:性能高,写操作只操作缓存,大大减少了数据库的写入压力,适合高并发写场景。
    • 缺点:数据一致性较弱,在缓存数据还未写入数据库时,如果系统崩溃,可能会丢失数据。并且实现相对复杂,需要处理缓存数据的持久化和数据恢复等问题。