2012-10-04 87 views

回答

1

要保存更新選手對象的變化,再次把它的數據存儲:

player.score = newScore 
player.put() 
+0

道歉,我的確在做 player.put()。 即使從memcache檢索到對象,player.put()是否更新我的數據存儲? 謝謝。 – dafeda

+0

是的,但只有在對它執行第一個put()之後緩存該對象。首先把對象獲得它的Key,它保存在實體中。在已有密鑰的實體上調用put()是更新操作。 –

+0

我首先將玩家添加到數據存儲並運行player.put()。接下來,我從memcache中檢索它,更新一個屬性並再次運行player.put()。因此,根據您剛纔所說的內容,數據存儲中的屬性也應該更新。 謝謝。 – dafeda

1

既然你使用Python,我認爲你看到的NDB caching,具體而言,memcache-backed caching效果。 所以是的,行爲是預期的。 顯然不是,因爲OP和BDFL都說代碼沒有使用NDB。

+0

我是否在使用Python時自動使用NDB?它在文檔中說它是數據存儲的替代品,並且我正在使用數據存儲... – dafeda

+1

它不是數據存儲的替代品,它是一個前提條件。您正在使用您在文件中導入的任何內容。如果您導入了NDB,則您正在使用NDB。如果你使用(ndb.something)製作你的模型tempalte,那麼你正在使用NDB。 –

+1

我們無法從目前給出的代碼中判斷OP是否使用NDB,但我的猜測並不是 - 如果他使用的是NDB,他不會直接在memcache中存儲實例;他會使用NDB的memcache集成。 –