【发布时间】:2016-03-14 21:59:30
【问题描述】:
我有一个列表,其中包含 40K 项可能存在于 3K 个集合中,我想计算每个项目存在多少个集合。
Python 中的简单算法并为简单起见省略了一些管道优化:
ids = [1,2,3,4,5]
set1 = (1,3)
set2 = (2,3)
set3 = (4,5)
sets = [set1, set2, set3]
ids_count = {}
for id in ids:
ids_count[id] = sum([redis.sismember(id, set) for set in sets])
它将需要 120M 的 redis 调用或 3K 使用流水线,两者都非常慢。 在不改变数据存储方式的情况下有更好的方法(我已经有了 id 列表和 redis 上的集合列表)
【问题讨论】: