복붙노트

[REDIS] 레디 스의 리더를위한 유일한 득점

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

해결법

  1. ==============================

    1.. 하나의 옵션은 zadd 리더 최고 점수 (로부터 Long.MAX_VALUE - 타임 스탬프)을 수행하는 것입니다 player_id.attempt_number을 (변경로부터 Long.MAX_VALUE 무엇에 타임 스탬프에 대한 합리적인 가장 높은 값 - A는 64 비트 INT가의 3 억에 대한 년의 가치를 저장합니다 서명 밀리 초, 그 힘이 필요하지 않도록)

    . 하나의 옵션은 zadd 리더 최고 점수 (로부터 Long.MAX_VALUE - 타임 스탬프)을 수행하는 것입니다 player_id.attempt_number을 (변경로부터 Long.MAX_VALUE 무엇에 타임 스탬프에 대한 합리적인 가장 높은 값 - A는 64 비트 INT가의 3 억에 대한 년의 가치를 저장합니다 서명 밀리 초, 그 힘이 필요하지 않도록)

    편집 : 앞에 0을 추가하는 것을 잊지 마세요 :)

  2. from https://stackoverflow.com/questions/15348426/unique-scoring-for-redis-leaderboard by cc-by-sa and MIT license