【发布时间】:2013-02-12 19:22:28
【问题描述】:
我有一个有序的集合 - 我通过 gem 'redis' 评分并添加到我的 redis 数据库中的项目,如下所示:
Item.each { |item|
$redis.zadd("scores", item.score, item.id)
}
还有一组带有基于标签 id 的键的项目。
Tag.each { |tag|
tag.items.each { |item|
$redis.sadd("tag_#{tag.id}", item.id)
}
}
我正在尝试获取得分为 x 或以上 的所有项目,并将其与具有特定标签的所有项目相交。我不需要对结果进行排序。我不确定我是否需要首先使用有序集,但这似乎是一种存储和检索结果的有效方式。
使用 Redis 查找范围和集合的交集的最佳方法是什么?
【问题讨论】:
-
我在使用 Redis 2.2.5 时遇到了问题。当我尝试调用 zinterstore 命令时,我会收到此错误。 “无法在 127.0.0.1:6379 连接到 Redis:连接被拒绝。”升级到redis 2.4.13后,这个错误就消失了。
-
另一个注意事项 - 在 redis 2.4.13 上,我无法在 zinterstore 中使用 sunionstore 的结果。再次升级解决了这个问题。现在在 2.6.10 版本上一切正常。
标签: ruby-on-rails redis