Skip to main content
 首页 » 编程设计

python之使用投影查询时的 NDB 缓存

2025年05月04日16kerrycode

找不到之前提出的这个具体问题。 App Engine 的导航台在使用投影查询与完整实体查询时如何处理缓存?

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

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

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

MyModel.query().get() 

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

请您参考如下方法:

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

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

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

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

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