我正在使用redis创建一个排行榜,并试图找出一种很好的方法来处理获得相同高分的球员(相同高分的球员应该按最先达到该高分的球员排序)。
我曾想过要做以下事情……
zadd leaderboard highscore.timestamp player_id.attempt_number但是,当我使用zrevrange时,时间戳的顺序显然是不正确的。
示例输入:
zadd leaderboard 20.123 5.1
zadd leaderboard 20.125 5.2
zadd leaderboard 20.012 5.3
zadd leaderboard 21.024 5.4输出:
zrevrange leaderboard 0 -1
5.4
5.2
5.1
5.3所需输出:
5.4
5.3
5.1
5.2发布于 2013-03-12 05:44:07
一种选择是执行zadd leaderboard highscore.(Long.MAX_VALUE - timestamp) player_id.attempt_number (将Long.MAX_VALUE更改为您的时间戳的合理最高可能值-有符号的64位整数将存储大约3亿年的毫秒,因此可能不需要)
编辑:不要忘记添加前导零:)
https://stackoverflow.com/questions/15348426
复制相似问题