【问题标题】:What are the top movies in this Redis sorted set?这个 Redis 排序集中的顶级电影是什么?
【发布时间】:2013-05-02 21:38:24
【问题描述】:

我已经从 IMDB(电影列表)从这里下载了电影:http://www.imdb.com/interfaces

我想在 Redis 排序集的帮助下计算给定电影在列表中出现的频率,但我对结果有点困惑:

redis 127.0.0.1:6379> zrangebyscore 'movies:title' 5000 +inf WITHSCORES 1)“倒计时” 2) “5254” 3)“大胆而美丽” 4) “5322” 5)“我们的日子” 6) “5451” 7)“邻居” 8) “6442” 9)“新价格是对的” 10) “7633” 11)“加冕街” 12) “8097”

我希望将最常出现的电影放在顶部。另外,我对分数有点困惑。这个5k、6k、7k是什么意思?

我用于实验的脚本是这样的 Rake 任务:

任务:导入做 文件 = File.new(ENV['file']) redis = Redis.new file.each_line 做 |l| 如果 l =~ /^"(.*)"/ 投入 1 美元 redis.zincrby 'movies:title', 1, $1 结尾 结尾

【问题讨论】:

  • 嗯。 Redis 当然是对的:cat db/movies_utf.txt | grep "我们的日子" | wc --> 5462 --> 问题出在数据集中。

标签: redis


【解决方案1】:

您可能想尝试使用 zrevrangebyscore 而不是 zrangebyscore。

语法:

ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

例如,在您的情况下:

zrangebyscore 'movies:title' +inf 5000 WITHSCORES

Reference

【讨论】:

    猜你喜欢
    • 2020-06-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2021-02-23
    • 2015-04-30
    • 2014-06-16
    相关资源
    最近更新 更多