gpt4 book ai didi

google-app-engine - 如何确保 GAE 上的 MemCache 和 Datastore 之间的一致性?

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:35 24 4
gpt4 key购买 nike

我正在使用事务将多个实体写入数据存储区。我也想将这些实体保留在 MemCache 中。如何确保 MemCache 中的实体副本实际上等于 Datastore 中的副本?

例如我能做到:

tx.begin()
datastore.put(entity)
if (memcache.putIfUntoched(key, entity))
tx.commit()

但是,如果事务失败,实体可能会在 MemCache 中结束,而不是在数据存储中。另一方面,如果我这样做:

tx.begin()
datastore.put(entity)
tx.commit()
memcache.putIfUntoched(key, entity))

那么数据存储事务可能会成功,但 MemCache 更新可能会失败。如何确保一致性?

最佳答案

根据我的经验,如果您同时写入数据库和缓存,可能没有太大帮助。一般来说,将数据库事务与其他东西(例如文件系统)混合在一起很难做到正确。

我建议你改变你的程序逻辑,这样

  1. 创建新记录时,只写入数据库
  2. 当您更新现有记录、写入数据库并使缓存中的相应槽无效时
  3. 当您查找记录时,只需检查缓存即可。如果不存在,从数据库加载并填充缓存

关于google-app-engine - 如何确保 GAE 上的 MemCache 和 Datastore 之间的一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com