[英]How to clear cache for specific model in NDB
我正在過渡到 NDB,我正在使用兩個 model 集:一個基於普通的舊google.appengine.ext.db
,另一個基於新的google.appengine.ext.ndb
。
我想將基於 NDB 的模型用於只讀並保留 NDB 中內置的緩存,同時能夠使用舊模型存儲更改(並在需要時向 NDB 發出需要更新緩存的信號)。
如何在保存基於舊db
的 model 中的更改時刷新/清除 NDB 中特定 model 實例的緩存?
我建議只禁用重復的那些 model 類的緩存; 安全總比后悔好。 這很容易通過把
_use_memcache = False
_use_cache = False
在每個 ndb.Model 子類中(即在屬性聲明之前或之后)。 此文檔位於: https://developers.google.com/appengine/docs/python/ndb/cache#policy_functions (查找最后的表格)。
如果您真的只想在使用舊的 db.Model 子類編寫實體時清除緩存,而不是上面的方法,您可以嘗試以下操作(假設 ent 是 db.Model 子類實例):
ndbkey = ndb.Key.from_old_key(ent.key())
ndbkey.delete(use_datastore=False)
這將從內存緩存和上下文緩存中刪除密鑰,但不會將其從數據存儲中刪除。 然而,當您嘗試使用它的 NDB 鍵讀回它時(或者甚至當它作為查詢結果返回時),它似乎會被刪除,直到當前 HTTP 請求處理程序完成,並且它不會使用內存緩存大約 30 秒.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.