2014-10-07 1 views
1

, 나는 모든 사용자에 대한 게임의 순위를 구현하기 위해 레디 스의 SortedSet를 사용하고 있습니다,하지만 난 문제가있어 :Redis SortedSet : 두 값의 점수가 같을 때 알파벳 순서가 아닌 숫자 순서로 값을 가져 오는 방법은 무엇입니까? 최근

zadd game_rank 55 6435 
zadd game_rank 55 6088561 
zadd game_rank 55 608825 
zrange game_rank 0 -1 

결과는 다음과 같습니다

"60882561" 
"608852" 
"6435" 

내가이 있는지 알고 싶어를 같은 스코어에서 숫자 순서대로 값을 얻을 수 있음 :

"6435" 
"608852" 
"60882561" 

답변

0

정렬 된 집합의 구성원이 동일한 점수를 가질 때 사전 식으로 정렬됩니다. AFAIK를 다른 방식으로 주문할 수있는 직접적인 방법은 없지만 클라이언트 측에서 쉽게 정렬 할 수 있습니다. 또는, 서버에서 바로 수행 할 수있는 짧은 Lua 스크립트를 작성할 수 있습니다.

위와 같은 방법을 사용하지 않고도 원하는대로 벗어날 수있는 약간의 해킹 방법이 있습니다.

zadd game_rank 550006435 6435 
zadd game_rank 556088561 6088561 
zadd game_rank 550608825 608825 

이것은 당신이 범위 을 할 수 있도록하고 당신 '당신이 제공 계급과 사용자 ID가 모두 정수는, 당신은 둘의 조합과 같이 점수를 사용할 수 ssuming했던 예를 바탕으로 각 순위에 대해 "숫자"정렬을 얻습니다 (즉, zrangebyscore game_rank 550000000 559999999).

관련 문제