查看多租户+ memcache的文档,似乎每个命名空间都有memcache条目。请参阅文档here。
问题在于我们打电话时:
memcache.flush_all()
所有内容都在memcache中刷新,而不仅仅是当前命名空间的条目。
在调用flush_all()之前,我们使用以下代码显式设置命名空间:
namespace_manager.set_namespace(foo)
如何仅针对当前命名空间刷新内存缓存中的条目?
答案 0 :(得分:1)
是的,应用程序的memcache中的flush_all deletes everything不仅仅是针对一个命名空间,这有些出乎意料。 App Engine开发团队具有允许按名称空间刷新的功能请求。请参阅Issue 5190。
一种解决方法是让您维持一个持久的整数"生成计数"您作为命名空间名称的一部分包含在内。当您想要刷新命名空间时,您可以增加生成计数并使用新的命名空间,这将是全新的空白。您可以忽略旧命名空间中的项目,因为它们会逐渐被逐出。