2014-10-19 27 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爲空。

相關問題