我在 Redis 上有多个排序集,其中包含用户 ID 和分数。有什么方法可以过滤和获取出现在多个集合中的用户 ID?例如,如果列表如下所示
List A - u1, u2, u3, u4, u5
List B - u3, u4, u5
List C - u4, u2, u3
List D - u4, u1, u2
如果我输入列表 A、B、C、D,则应该显示的唯一用户 ID 是 u4
如果我输入列表 A、B、C,则返回的用户 ID 为 u4、u3。
我可以想象在 PHP 中通过加载每个列表并过滤每个列表直到留下我想要的 ID 来执行此操作,但是有什么方法可以在 Redis 中执行此操作吗?
我也愿意接受在 Redis 中存储此结构的新方法。
最佳答案
在集合论中,这称为交集。 Redis 有一个 ZINTERSTORE命令,将多个排序集的键相交并将它们存储到一个新键中。
ZINTERSTORE LIST-Z 4 A B C D
ZRANGE LIST-Z 0 -1 WITHSCORES
这与键 A、B、C 和 D 中的用户相交,并将交集存储在键 LIST-Z 中
关于php - 获取多个redis排序集中出现的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669980/