面试题答案
一键面试先更新数据库,再删除缓存
- 优点:实现简单,大多数场景适用,能保证数据最终一致性。
- 缺点:存在短暂数据不一致窗口,并发场景下可能先读缓存读到旧数据,再更新数据库成功,导致缓存与数据库数据不一致。
先删除缓存,再更新数据库
- 优点:在一定程度上减少数据不一致时间,若缓存删除成功,后续读操作会从数据库加载最新数据并更新缓存。
- 缺点:同样存在数据不一致风险,若删除缓存成功但更新数据库失败,后续读操作会加载到旧数据;且可能出现缓存击穿问题,高并发下旧缓存刚删除,大量请求同时查询数据库。
读写锁/分布式锁
- 优点:通过锁机制确保数据一致性,能有效避免并发读写造成的数据不一致。
- 缺点:引入锁会增加系统复杂度和性能开销,锁竞争激烈时会降低系统吞吐量。
异步更新缓存
- 优点:利用消息队列异步处理缓存更新,不影响主业务流程,提高系统响应速度和吞吐量。
- 缺点:增加系统复杂性,需处理消息队列相关问题如消息丢失、重复消费等,且存在数据一致性延迟。