這是關於GAE/Java的內存緩存一個非常普遍的問題:參照內存緩存對象和更新他們
我有被存儲在內存緩存稱爲網絡的對象,並且我有另一個對象調用用戶具有基準到網絡。
Network network=Memcache.get(networkKey);
user._network=network; //user references an object that came from Memcache...
我現在有一串代碼改變user._network(不接觸內存緩存):
user._network = //做一些改變的對象,而不觸及內存緩存
確定所以這裏的問題, 直接看代碼,最後一行是否更新了memcache中的網絡對象?我有需要訪問更新的網絡對象的servlet,問題是如果我錯在將Memcache對象視爲常規對象。
也許正確的方法是?
Network network=Memcache.get(networkKey);
network.doUpdate();
Memcache.put(key,network);
最後一行不會執行任何操作,除非您的Memcache類以某種方式知道網絡對象的密鑰是什麼。 Memcache需要密鑰,價值。 –
對不起,我解決了這個問題,這不僅僅是一個錯字。問題仍然存在...... –
明白了,請參閱下面的答案。 –