面试题答案
一键面试1. 写后更新策略
- 操作流程:当数据源数据更新后,立即同步更新缓存数据。这种策略实现简单直接,能较快保证缓存与数据源一致。
- 优点:数据一致性高,只要数据源更新成功,缓存就能马上更新。
- 缺点:若更新操作频繁,会增加缓存写入压力,可能影响系统性能。特别是在高并发场景下,大量写缓存操作可能导致缓存服务响应变慢。
2. 写失效策略
- 操作流程:数据源数据更新时,不直接更新缓存,而是将缓存中对应的数据标记为失效。当应用端从缓存读取数据时,发现数据失效,再从数据源读取最新数据并更新到缓存。
- 优点:减少了数据源更新时对缓存的直接写入操作,降低了缓存写入压力,适用于读多写少的场景。
- 缺点:可能出现数据不一致的短暂窗口,即从数据源更新到应用端读取并更新缓存这段时间内,缓存数据是旧的。此外,应用端每次读取都需检查缓存有效性,增加了额外逻辑。
3. 异步更新策略
- 操作流程:数据源数据更新后,通过消息队列等异步机制,将更新任务发送到队列中。系统有专门的异步处理程序从队列中取出任务,按顺序更新缓存。
- 优点:对数据源更新操作的影响较小,不会阻塞数据源更新流程。同时,异步处理可以批量处理缓存更新任务,提高缓存更新效率,减少对系统性能的影响。
- 缺点:引入了消息队列等额外组件,增加了系统复杂性和维护成本。并且在异步处理过程中,也会存在短暂的数据不一致问题。
4. 双写一致性策略
- 操作流程:在数据源更新数据的同时,直接更新缓存,并且使用事务机制保证数据源和缓存更新的原子性,要么都成功,要么都失败。
- 优点:能最大限度保证数据一致性,基本不存在数据不一致的窗口。
- 缺点:实现较为复杂,对事务管理要求高。同时,事务操作会增加操作的时间开销,可能影响系统的整体性能,特别是在高并发场景下容易出现性能瓶颈。