【问题标题】:Is NDB query() going through the cache?NDB query() 是否通过缓存?
【发布时间】:2023-04-05 01:34:02
【问题描述】:

NDB query() 是否通过缓存?

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

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

在许多页面中,我都显示了一个产品列表,这就是我希望它来自缓存的原因。

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

【问题讨论】:

  • 文档说“查询不会在任何缓存中查找值。但是,如果缓存策略这样写,查询结果将被写回上下文缓存(但绝不会写回 Memcache)。
  • 蒂姆是对的。 (蒂姆:您应该重新提交您的评论作为答案,这样它才能被接受并获得信用。)
  • 关于将列表存储在缓存中的任何建议?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    相关资源
    最近更新 更多