我正在使用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实例本身。
谢谢
答案 0 :(得分:2)
实体实现Serializable,因此将它存储在Memcache中应该没有问题。唯一的限制是对象的总大小应小于app。 1MB,但它适用于所有对象。
但请记住,任何时候都可以从Memcache中删除对象。因此,当您致电entityLaterOn
时,您必须准备好entityLaterOn = syncCache.get("abc");
为空。