2015-01-16 3 views
0

특정 게임에서 사용자는 점수를 유지합니다. 어떻게 이것을 redis에서 유지합니까?가장 높은 점수를 가진 사용자를 얻으려면 어떤 구조를 사용해야합니까?

u1, 1 
u2, 1 
u1, 1 
u3, 1 
u4, 1 
u5, 1 
u4, 1 
u4, 1 
u1, 1 
u4, 1 
u2, 1 

을 다음과 내가 레디 스 반환 할 것이며 내가 지도자에 의해 우리가 레디 스 구조에 넣을 때마다 자동 정렬에 결과를 원하는

득점 패턴입니다.

u4, 4 
u1, 3 
u2, 2 
u3, 1 
u5, 1 

redis를 통해 어떻게 가져오고/가져오고 검색해야합니까?

답변

1

사용자 점수와 같은 것을 만들려면 데이터 옆에 점수가있는 정렬 된 집합 (zset이라고도 함)을 사용하십시오. 필요한 경우 사용자를 순서대로 검색하거나 역순으로 검색 할 수 있습니다. 명령에 대한 전체 설명서를 참조하십시오. http://redis.io/commands#sorted_set

+0

최종 세트를 가져오고 사용해야하는 정확한 명령 세트를 보여줄 수 있습니까? zset이 사용되지 않습니다. – Rpj

+0

ZADD, ZRANGE 명령을 사용하여 정렬 할 수 없다. – Rpj

+0

정렬 된 집합에 사용자를 추가하려면 'zadd users 4 u1'과 같은 명령을 사용하십시오. 이렇게하면 점수가 4 인 u1이라는 항목 (사용자)이 zset ùsers'에 추가됩니다. 가장 높은 점수에서 가장 낮은 점수로 사용자를 검색하려면 다음을 수행하십시오 :'zrevrange users 0 -1' 이것은 모든 사용자를 내림차순으로 검색합니다. 점수가 필요하다면'WITHSCORES' 매개 변수를 추가하십시오 :'zrevrange users 0 -1 WITHSCORES' – Exinferis

관련 문제