2014-10-19 58 views
2

我正在使用应用程序引擎的低级java数据存储区api。我想将提取的实体实例存储到memcache中,但不确定是否存在与此相关的任何问题。例如:将实体实例放入memcache服务可以吗?

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

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

了一段时间后,我拉出来的实体内存缓存中,修改属性,并把它回数据存储区:

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

是合法使用?是否有任何状态与最初放入内存缓存中的实体相关联,从而导致尝试上述问题?

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

谢谢

回答

2

实体实现Serializable,所以不应该有其存储在内存缓存的问题。唯一的限制是对象的总大小应该小于应用程序。 1MB,但适用于所有对象。

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

相关问题