[Redis] 실시간 랭킹에서 사용하는 ZADD

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member
  ...]

e.g) ZADD key 점수 userIdx

# 1의 ranking 점수를 1로 세팅
127.0.0.1:6379> ZADD ranking 1 "1"
(integer) 1

# 1의 ranking 점수를 1로 세팅 (NX 옵션)
# NX 옵션은 key가 존재하지 않을때만 세팅. 현재 1이 있기 때문에 세팅 안됨
127.0.0.1:6379> ZADD ranking NX 2 "1"
(integer) 0

# 2의 ranking 점수를 2로 세팅
127.0.0.1:6379> ZADD ranking 2 "2"
(integer) 1

# 2의 ranking 점수를 3로 세팅 (LT 옵션)
# LT 옵션은 새로운 점수가 현재 점수보다 낮을때만 세팅. 현재 점수가 2이고, 새로운 점수가 1이기 때문에 세팅 안됨
127.0.0.1:6379> ZADD ranking LT 3 "2"
(integer) 0

# 3의 ranking 점수를 3로 세팅
127.0.0.1:6379> ZADD ranking 3 "3"
(integer) 1

# 4의 ranking 점수를 1로 세팅 (XX 옵션)
# XX 옵션은 key가 존재할때만 세팅. 현재 4가 없기 때문에 세팅 안됨
127.0.0.1:6379> ZADD ranking XX 1 "4"
(integer) 0

# 3의 ranking 점수를 2로 세팅 (GT 옵션)
# GT 옵션은 새로운 점수가 현재 점수보다 클때만 세팅. 현재 점수가 3이고, 새로운 점수가 2이기 때문에 세팅 안됨
127.0.0.1:6379> ZADD ranking GT 2 "3"
(integer) 0

# 3의 점수 제거
127.0.0.1:6379> ZREM ranking "3"
(integer) 1

# ranking의 순위를 처음부터 끝까지 점수와 함께 출력
127.0.0.1:6379> ZREVRANGE ranking 0 -1 withscores
1) "2"
2) "2"
3) "1"
4) "1"

# 1의 점수 출력
127.0.0.1:6379> ZSCORE ranking "1"
"1"

# 2의 등수 출력 (결과는 0등 (redis의 순의는 0부터 시작))
127.0.0.1:6379> ZREVRANK ranking "2"
(integer) 0

# 1의 등수 출력 (결과는 1등)
127.0.0.1:6379> ZREVRANK ranking "1"
(integer) 1

# ranking KEY 제거
127.0.0.1:6379> DEL ranking
(integer) 1

 

명령어 출처: redis.io