我想保留一些應用程序配置條目作爲數據存儲區中的實體。現在,當我從數據存儲查看器(開發環境)或Google Cloud Platform數據存儲用戶界面(生產環境)更新這些條目時,應用程序不會看到新值。這是因爲ndb緩存實體。如何刷新Google App Engine數據存儲區中保存的配置條目?
我的(相當開放的)問題是:在數據存儲中保存配置條目,從Google的用戶界面更新配置條目以及爲應用程序提供新值的技術是什麼?
我已經想到以下的:
在
ndb.Model
子類定義了配置條目設置一個合理_memcache_timeout
- 但內存緩存的用法是在這種情況下,次優的(執行不必要的數據存儲區中讀取)。將緩存設置保持爲最大值,但在應用程序的管理區域中執行
flush
操作以單獨刷新實體。這很棘手,因爲您無法確定實體的實際緩存鍵。但通常應該是_memcache_prefix + key.urlsafe()
,其中_memcache_prefix
在ndb.context module中定義。更新應用程序管理區域中的所有配置條目,但不使用Google的數據存儲用戶界面 - 這需要額外的努力。
在生產環境和開發環境控制檯上,您都可以進入memcache查看器並在更新值後手動刷新緩存。您的應用不應再看到較舊的值。這會刷新所有條目,但影響應該很小 - 無論如何,您的應用程序應該準備好處理消失的memcache值。 –
根據您的應用程序使用這些配置的方式,您可能還需要重新啓動已在運行的應用程序實例。 –
@DanCornilescu我也將緩存用於其他目的(不僅用於存儲配置條目)。在我的情況下,刷新整個緩存對性能的影響是不可忽視的。但是在其他情況下你的想法聽起來很棒。 –