NDB query()是否通过缓存?

时间:2013-03-13 11:59:48

标签: python google-app-engine memcached app-engine-ndb

NDB query()是否通过缓存?

NDB文档提到它将自动使用缓存。 这仅适用于get_by_id或查询语句,例如:。

Product.query().order(Product.name).fetch()

在很多页面中,我正在显示产品列表,这就是我希望它来自缓存的原因。

替代方法是查询产品列表并自己存储在memcache中,但在这种情况下,产品更新不会在我的“手动”缓存中结束。 或者可以选择将所有产品ID存储在缓存中,然后通过memcache / datastore检索它们。但这需要一个get_by_id,它接受多个id并返回一个列表..

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。由于查询不是缓存的(至少在不同的上下文之间,或者这是我在文档中理解的),我决定对查询进行内存缓存并使其与我的添加/更新/删除数据保持同步。

Here是我解决问题的方法。我希望它有所帮助。