【问题标题】:NDB Caching When Using Projected Queries使用投影查询时的 NDB 缓存
【发布时间】:2012-08-21 03:22:50
【问题描述】:

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

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

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

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

MyModel.query().get()

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-05
        • 2020-09-05
        相关资源
        最近更新 更多