2013-06-01 4 views
0

나는 것은Redis에서 hset을 어떻게 정렬합니까?

redis 127.0.0.1:6379[4]> hset player1 point 2 
(integer) 1 
redis 127.0.0.1:6379[4]> hset player1 level 5 
(integer) 1 
redis 127.0.0.1:6379[4]> hset player2 point 1 
(integer) 1 
redis 127.0.0.1:6379[4]> hset player2 level 9 
(integer) 1 
redis 127.0.0.1:6379[4]> hset player3 point 10 
(integer) 1 
redis 127.0.0.1:6379[4]> hset player3 level 5 
(integer) 1 

어떤 방법으로 나를 목록 반환 방법이 있나요 지점 내 데이터를 정렬하는 방법?

player3 
player1 
player2 
+2

SET를 사용해야합니다. HSET (해시 세트)은 정렬을위한 잘못된 데이터 구조입니다. – NickD

+0

@fege 같은 줄에 도움이 될 수도 있습니다. http://stackoverflow.com/a/16449868/791406 – raffian

답변

1

HSET 응답을 다시 설정할 수 없습니다. 하지만 당신은 대신 해시 맵의 Redis sorted set를 사용할 수 있습니다

ZADD players 2 player1 
ZADD players 1 player2 
ZADD players 10 player3 

지금 당신이 점수에 의해 모든 선수들을 정렬 할 수 있습니다 : 추가 데이터를 저장하려는 경우

ZREVRANGE players 0 -1 

당신은 HGETZREVRANGE를 모두 사용할 수 있습니다. 따라서 ZREVRANGE을 사용하여 가장 적합한 플레이어의 키를 얻고 GET, HGET 또는 HGETALL을 사용하여 필요한 추가 데이터를 얻으십시오. 그러나이 경우 정렬 된 세트와 해시 맵을 모두 유지해야합니다.

HMSET player1 name Peter level 5 
HMSET player2 name John level 9 
HMSET player3 name Michael level 5 
ZADD players 2 player1 1 player2 10 player3 
관련 문제