使用投影查询时的NDB缓存

时间:2012-08-26 07:35:08

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

之前无法找到此具体问题。在使用预测查询与完整实体查询时,App Engine的NDB如何处理缓存?

例如,如果我先进行预测查询..

MyModel.query().get(projected=['name'])

...然后再进行常规查询...

MyModel.query().get()

......我会得到什么?完整的实体?如果是这样,NDB会自动缓存第一个查询的任何部分吗?或者NDB是否能够很好地区分,所以下次运行预测查询时可能会从缓存中提取它?

2 个答案:

答案 0 :(得分:4)

据我所知,查询结果仅缓存在上下文缓存中,但不会从缓存中获取结果以供查询。

key.get()将从缓存中缓存和检索,但不会从缓存中检索query.get()。

https://developers.google.com/appengine/docs/python/ndb/cache

来自文档:    查询不会在任何缓存中查找值。但是,如果缓存策略这样说,则查询结果将写回到上下文缓存中(但永远不会发送到Memcache)。

要回答有关您将获得的内容的问题,在两个查询中都会显示结果将从数据存储区中提取,而不是从缓存中提取。

答案 1 :(得分:3)

永远不会缓存投影查询结果。如果按键获得返回投影结果是不对的。所以不用担心。