NDB的query()调用经过缓存吗?

5 投票
1 回答
1501 浏览
提问于 2025-04-17 18:56

NDB的query()会通过缓存吗?

NDB的文档提到它会自动使用缓存。这是仅针对get_by_id,还是也适用于像下面这样的查询语句呢:

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

在很多页面上,我都在显示产品列表,所以我希望它能从缓存中获取。

另一种方法是自己查询产品列表并存储在memcache中,但这样的话,产品的更新就不会反映在我“手动”管理的缓存里。或者我可以选择把所有产品的ID存储在缓存中,然后通过memcache或数据存储来获取它们。但这就需要一个可以接受多个ID并返回列表的get_by_id方法。

1 个回答

1

我也遇到过同样的问题。因为查询结果不会被缓存(至少在不同的环境下是这样,或者这是我从文档中理解的),所以我决定把查询结果放到内存缓存中,并且保持它和我的添加/更新/删除数据同步。

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

撰写回答