我正在使用事务向数据存储区写入多个entites。我也希望将这些实体保存在MemCache中。如何确保MemCache中的实体副本实际上等于数据存储区中的副本?
E.g。我能做到:
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更新可能会失败。我如何确保一致性?
答案 0 :(得分:2)
根据我的经验,如果您同时写入数据库和缓存,可能没那么有用。通常,将DB事务与其他事物(例如文件系统)混合是很难做到的。
我建议您更改程序逻辑,以便