想要问一下缓存google app引擎的首页查询的最佳做法是什么,其数据存储只提供最终的一致性(除非使用祖先查询)
我遇到的问题是,如果我将项目放入数据存储区,我无法立即运行查询以获取正确且最新的结果,并且基于我正在阅读的文档,我无法知道所有索引值(或仅相关的索引值)何时更新以生成更新的查询
我已经并行地设置了一个手动添加到缓存中,但是我确实没有确切的入口点以确保缓存与数据存储区同步,除非我为缓存过期设置了任意时间。 。
有没有办法解决这个问题?
谢谢!
答案 0 :(得分:1)
您可以照常缓存查询,但另外使用_post_put_hook使当前缓存的值无效。这样,您将在缓存中获得几乎最新结果。
class Foo(ndb.Model):
CACHE_KEY = 'bla_cache'
bla = ndb.StringProperty()
@clasmethod
def build_page(cls):
result = memcache.get(CACHE_KEY)
if result is None:
result = cls.query().fetch(100)
return result
def _post_put_hook(self, future):
memcache.delete(CACHE_KEY)