1

之前找不到这个特定的问题。App Engine 的 NDB 在使用投影查询与完整实体查询时如何处理缓存?

例如,如果我先进行投影查询..

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

...然后接下来进行常规查询...

MyModel.query().get()

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

4

2 回答 2

4

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

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

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

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

要回答有关您将获得什么的问题,在这两个查询中,结果似乎都是从数据存储中获取的,而不是从缓存中获取的。

于 2012-08-26T08:11:19.050 回答
3

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

于 2012-08-26T21:37:36.810 回答