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