我生成一个合并了许多用户评论的提要,因此您的提要可能是user1 + user2 + user1000的评论,而我的用户可能是user1 + user2。所以,我也行:合并缓存的GQL查询而不是使用输入
some_comments = Comment.gql("WHERE username IN :1",user_list)
我不能只是内存缓存整个事情,因为每个人都会有不同的饲料,即使user1和user2的饲料是常见的许多观众。据the documentation:
... IN操作符执行列表中的每一个 项单独 底层数据存储查询。返回的实体 是所有基础 数据存储查询的 交叉产物的结果,并且是 未重复的。对于任何 单个GQL查询,最多允许30个数据存储区查询。
是否有一个库函数合并一些分类和缓存的查询,还是我将不得不:
for user in user_list
if memcached(user):
add it to the results
else:
add Comment.gql("WHERE username = :1",user) to the results
cache it too
sort the results
(在最坏的情况下(没有什么是缓存)我预计发送30个GQL查询关闭比一个巨大的IN查询慢)