首页 > 解决方案 > Redis 排序集可变参数排行榜

问题描述

我正在尝试建立一个以胜负盈亏格式的排行榜。例如,10/20 将是​​ 10 胜和 20 负。我正在使用 redis 并想使用排序集。我怎样才能让redis按胜利排序,但也返回损失?

我在redis网站上找到了这个:

"

> zadd hackers 1940 "Alan Kay"
(integer) 1
> zadd hackers 1957 "Sophie Wilson"
(integer) 1
> zadd hackers 1953 "Richard Stallman"
(integer) 1
> zadd hackers 1949 "Anita Borg"
(integer) 1
> zadd hackers 1965 "Yukihiro Matsumoto"
(integer) 1
> zadd hackers 1914 "Hedy Lamarr"
(integer) 1
> zadd hackers 1916 "Claude Shannon"
(integer) 1
> zadd hackers 1969 "Linus Torvalds"
(integer) 1
> zadd hackers 1912 "Alan Turing"
(integer) 1

如您所见,ZADD 类似于 SADD,但需要一个额外的参数(放置在要添加的元素之前),即分数。ZADD 也是可变参数,因此您可以自由指定多个分值对,即使在上面的示例中没有使用它。

"

我很难找到一个可变参数用法的例子。这是一种将 2 个分数添加到一个元素的方法吗?像 zadd 黑客 1940 1945 “艾伦凯”?

我认为散列可能是一个更好的解决方案,但是我必须在其他地方对其进行排序。

我的主要问题:如何使用 redis 按输赢对排行榜进行排序?

标签: redisleaderboard

解决方案


ZADD 的“可变参数”部分指的是它能够在一次调用中设置多个分数元素对。Sorted Sets 的元素总是只有一个分数。

但是,您可以保留两个 Sorted Set,一个用于胜利,另一个用于失败。


推荐阅读