【发布时间】:2011-08-05 22:30:33
【问题描述】:
我正在生成一个合并许多用户的 cmets 的提要,因此您的提要可能是 user1+user2+user1000 的 cmets,而我的可能是 user1+user2。所以我有这行:
some_comments = Comment.gql("WHERE username IN :1",user_list)
我不能只对整个内容进行内存缓存,因为每个人都会有不同的提要,即使用户 1 和用户 2 的提要对许多观众来说都是通用的。根据the documentation:
...IN 运算符执行一个单独的 底层数据存储查询每个 列表中的项目。实体 返回的结果是 所有底层证券的叉积 数据存储查询并且是 重复数据删除。最多允许 30 个数据存储查询 单个 GQL 查询。
是否有一个库函数来合并一些排序和缓存的查询,或者我必须这样做:
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 查询要慢。)
【问题讨论】:
标签: python google-app-engine gql