在 Memcached 上保存 MySQL 查询的结果时,我正在考虑一致性。更新会发生什么?
更新时,数据将从 Memcached 中删除。
但是......考虑以下场景,其中以下操作按此顺序发生:
- 客户端 A 向 API 服务器发送更新请求。
- 客户端 B 向 API 服务器发送 GET 请求。
- 两个请求都并行执行。
- 处理客户端 B 请求的脚本从数据库中获取数据。
- 处理客户端 A 请求更新 DB 数据的脚本。
- 处理客户端 A 请求的脚本向 memcached 发送删除请求。
- 处理客户端 B 请求的脚本向 memcached 发送插入请求。
在这种情况下,memcached 会填充旧数据。
在这种情况下如何确保一致性?