将Entity实例放入memcache服务是否可以?

时间:2014-10-19 05:23:33

标签: google-app-engine

我正在使用app引擎的低级java数据存储api。我想将获取的Entity实例存储到memcache中,并且不确定是否存在与之相关的任何问题。例如:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity entity = datastore.get(...);

MemcacheService syncCache = MemcacheServiceFactory.getMemcacheService();
syncCache.put("abc", entity);

现在一段时间后,我将实体从memcache中拉出来,修改一个属性,并将其放回数据存储区:

entityLaterOn = syncCache.get("abc");
entityLaterOn.setProperty("foo", "bar");
datastore.put(entityLaterOn);

是合法用法吗?是否有任何状态与我最初放入memcache的实体相关联,这会导致尝试上述问题?

我在memcache中看到的大多数示例都涉及首先将Entity实例转换为中间模型类,而不是直接缓存Entity实例本身。

谢谢

1 个答案:

答案 0 :(得分:2)

实体实现Serializable,因此将它存储在Memcache中应该没有问题。唯一的限制是对象的总大小应小于app。 1MB,但它适用于所有对象。

但请记住,任何时候都可以从Memcache中删除对象。因此,当您致电entityLaterOn时,您必须准备好entityLaterOn = syncCache.get("abc");为空。