php - 获取多个redis排序集中出现的所有键

标签 php redis

我在 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 中

关于php - 获取多个redis排序集中出现的所有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669980/

相关文章:

PHP脚本无法正确运行python脚本,但它在终端上正确运行

php - 如何从 Zend_Db 模型类中的另一个表中获取数据?

javascript - Redis SCAN 没有给出 NodeJS 中的所有匹配项

c# - StackExchange.Redis ConnectionMultiplexer.Connect() 间歇性工作

angularjs - 使用 Redis 键值存储的实时 Web 应用程序

php - 如何解决这个重名错误?

php - 数据库与服务器端处理

php - MySQL/PHP : consolidate results such as footnotes from multiple tables

ruby-on-rails - 没有为带有 Mongoid 的意见生成的方法

server - Redis 简单生产服务器规范