获取显示在多个重新排序集上的所有关键点


Get all keys that appear on multiple redis sorted sets

我在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
  1. 如果我输入列表A、B、C、D,那么唯一应该出现的用户ID是u4

  2. 如果我输入列表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 中