我在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。
我可以通过加载每个列表并过滤掉每个列表直到我留下我想要的ID来在PHP中进行映像处理,但是有什么方法可以在Redis中执行此操作吗?
我也对在redis中存储此结构的新方法持开放态度。
答案 0 :(得分:3)
在集合论中,它被称为交集。 Redis有一个ZINTERSTORE命令,它与多个有序集的键相交,并将它们存储到一个新密钥中。
ZINTERSTORE LIST-Z 4 A B C D
ZRANGE LIST-Z 0 -1 WITHSCORES
这与来自键A,B,C和D的用户相交,并将关键字存储在键LIST-Z中