我目前通过memcache中的密钥缓存我的appengine数据存储区中的所有实体。
我是否更有效率地将所有查询作为KEY ONLY查询,然后从memcache获取实际实体?显然,批量获取缓存中缺少的实体。通常,从返回整个实体的数据存储区执行简单查询会更有效。
答案 0 :(得分:4)
是。它更快,更便宜。
http://code.google.com/appengine/kb/postpreviewpricing.html#operations_charged_for
- 每100k操作的读取操作(查询,实体提取)将花费 $ 0.07 。
- 小型操作(Key Fetch,Id Allocation)每100k操作的成本 $ 0.01 。
答案 1 :(得分:4)
这样做可能会稍微便宜一些,但由于您可能不得不至少获取一个memcache中缺少的实体,因此使用此方法不会节省太多时间。一个更好的解决方案是将查询结果存储在memcache中,这样您就可以使用单个memcache get获取结果集。
答案 2 :(得分:2)
是的,仅限密钥的查询更便宜,因为它们只需从索引中读取。
如果您要在memcache中存储实体,请务必先serialize them to protobufs。