랭킹을 만드는데에 있어서 Redis를 사용하는 이유는 다음과 같다.
- RDBMS를 사용한다면 SELECT 쿼리로 조회하고 정렬함에 있어서 많은 자원과 시간을 소모할 것이다.
- NoSQL은 많은 양의 데이터를 효율적으로 처리가 가능하다.
- 인메모리 DB이기 때문에 데이터 처리 속도가 빠르다.
- 한 사람이 1등이고, 2등일 수 없다.
- score에 따라 자동적으로 value를 sort 한다. 추가적으로 sort를 하면서 자원을 소모하지 않아도 된다.
Sorted Sets는 Set과 Hash가 합쳐진 모양이다.
score가 같으면 value로 sort된다.
ZADD [KEY] [score1] [value1] [score2] [value2] ...
KEY에 score1인 value1과 score2인 ELEMENT2를 넣는다. 더 많은 쌍 추가가 가능하다.
ZRANGE [KEY] [START_INDEX] [END_INDEX] [WITHSCORE]
START_INDEX부터 END_INDEX 까지의 Value 값을 반환한다. WITHSCORE 옵션을 추가하면 SCORE도 함께 반환된다.
역순의 경우 ZREVRAGNE 를 사용한다.
ZINCRBY [KEY] [NUMBER] [Value]
KEY에서 Value의 SCORE를 NUMBER만큼 증가시킨다.
랭킹에 따른 점수를 수정할 때 사용할 예정이다.
추가적인 다양한 명령어는 이 블로그에 자세히 설명되어 있다.