缓存Google App Engine(GAE)首页查询的最佳做法

时间:2014-12-17 05:03:40

标签: python google-app-engine memcached google-cloud-datastore

想要问一下缓存google app引擎的首页查询的最佳做法是什么,其数据存储只提供最终的一致性(除非使用祖先查询)

我遇到的问题是,如果我将项目放入数据存储区,我无法立即运行查询以获取正确且最新的结果,并且基于我正在阅读的文档,我无法知道所有索引值(或仅相关的索引值)何时更新以生成更新的查询

我已经并行地设置了一个手动添加到缓存中,但是我确实没有确切的入口点以确保缓存与数据存储区同步,除非我为缓存过期设置了任意时间。 。

有没有办法解决这个问题?

谢谢!

1 个答案:

答案 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)