2015-02-23 45 views
2

我在redis上有多个包含用户ID和分数的有序集。有什么方法可以过滤并获取出现在多个集合上的用户ID吗?例如,如果列表看起来像这样获取出现在多个redis排序集上的所有密钥

List A - u1, u2, u3, u4, u5 
List B - u3, u4, u5 
List C - u4, u2, u3 
List D - u4, u1, u2 
  1. 如果我在列表中的进料,B,C,d然后应出现的唯一用户ID是U4

  2. 如果我饲料中列表A,B,C然后返回的用户ID是u4,u3。

我可以成像通过加载每个列表和过滤掉每个列表,直到我留下我想要的ID在PHP这样做,但有什么办法,我可以开展Redis的这个操作?

我也开放了将这种结构存储在redis中的新方法。

回答

3

在集合论中,它被称为交集。 Redis有一个ZINTERSTORE命令,它与多个有序集合的键相交并将它们存储到一个新的键中。

ZINTERSTORE LIST-Z 4 A B C D 
ZRANGE LIST-Z 0 -1 WITHSCORES 

这从相交键A,B,C和d的用户,并存储在路口密钥列表-Z

+0

感谢这个,我认为这是一段路要走。一直在玩这个,我得到了我期望的结果。 – JohnP 2015-02-23 12:36:38