gpt4 book ai didi

python - Redis:计算集合中项目出现次数的最佳方法

转载 作者:可可西里 更新时间:2023-11-01 11:22:03 26 4
gpt4 key购买 nike

我有一个 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 使用流水线,两者都非常慢。在不改变数据存储方式的情况下,有更好的方法来做到这一点(我已经在 redis 上有了 ids 列表和 sets 列表)

最佳答案

我认为最有效的方法是下载整个东西(所有集合和所有 id,正如您所描述的,无论如何您最终都会这样做)然后在内存中执行所有操作。此外,您的算法可能会在没有成员检查的情况下更有效地迭代集合,如下所示:

# ...
for set in sets:
for id in set:
if id not in ids_count:
ids_count[id] = 0
ids_count[id] += 1

这是假设您的性能受网络限制。但是您必须对此进行基准测试才能确定。

关于python - Redis:计算集合中项目出现次数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22660605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com