我想保留一些应用程序配置条目作为数据存储区中的实体。现在,当我从数据存储查看器(开发环境)或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我也将缓存用于其他目的(不仅用于存储配置条目)。在我的情况下,刷新整个缓存对性能的影响是不可忽视的。但是在其他情况下你的想法听起来很棒。 –