NDB的query()调用经过缓存吗?
NDB的query()会通过缓存吗?
NDB的文档提到它会自动使用缓存。这是仅针对get_by_id,还是也适用于像下面这样的查询语句呢:
Product.query().order(Product.name).fetch()
在很多页面上,我都在显示产品列表,所以我希望它能从缓存中获取。
另一种方法是自己查询产品列表并存储在memcache中,但这样的话,产品的更新就不会反映在我“手动”管理的缓存里。或者我可以选择把所有产品的ID存储在缓存中,然后通过memcache或数据存储来获取它们。但这就需要一个可以接受多个ID并返回列表的get_by_id方法。
1 个回答
1
我也遇到过同样的问题。因为查询结果不会被缓存(至少在不同的环境下是这样,或者这是我从文档中理解的),所以我决定把查询结果放到内存缓存中,并且保持它和我的添加/更新/删除数据同步。
这里是我解决这个问题的方法。希望对你有帮助。