ZRANGE by index

레디스 개발자 교육 신청 레디스 정기점검/기술지원
Redis Technical Support
레디스 엔터프라이즈 서버
Redis Enterprise Server

member list를 조회(적은것 부터)

사용법은 zrange key start stop 이다.
start stop은 index이다. lrange에서 사용하는 index와 같은 개념이다.
score가 적은 것 부터 조회된다. score가 같으면 member로 비교한다.
전체를 조회할 때는 0 -1을 사용한다.

Example

명령>zadd myzip 2 "서울" 3 "부산" 5 "대구" 4 "인천" 6 "광주" 1 "경기"
결과>6
명령>zrange myzip 0 -1   score로 sort되어 보여진다
결과> 0) 경기
1) 서울
2) 부산
3) 인천
4) 대구
5) 광주
명령>zrange myzip 0 -1 withscores   withscores 옵션을 사용하면 score가 표시된다
결과> 0) 1 -> 경기
1) 2 -> 서울
2) 3 -> 부산
3) 4 -> 인천
4) 5 -> 대구
5) 6 -> 광주

애니메이션 보기

redis-cli 와 다른 점

  • withscores 옵션을 사용했을때 redis-cli는 value와 score가 각각 다른 line에 표시된다.
    반면, Redis Web Client는 위 결과와 같이 한 line에 score -> value 로 행태로 표시된다.
  • lrange, zrange, zrevrange 같은 조회 명령에서 1부터 시작하지 않고, start(시작 index)부터 시작한다.
    예를 들어, zrange key 2 52) 3) 4) 5) 로 표시되고, zrange key -4 -1 이면 -4) -3) -2) -1) 로 표시된다.
    이는 입력한 index(start stop)과 비교를 쉽게하기 위해서다.
  • lrange, zrange, zrevrange 같은 조회 명령의 결과 마지막에 Total count -> number 가 표시된다.

일부분만 조회할 때

index(start, stop)으로 범위를 준다.

Example

명령>zrange myzip 1 3 withscores    두번째부터 네번째까지 조회
결과> 1) 2 -> 서울
2) 3 -> 부산
3) 4 -> 인천
명령>zrange myzip 3 -1 withscores    네번째부터 까지 조회
결과> 3) 4 -> 인천
4) 5 -> 대구
5) 6 -> 광주

index에 음수 사용 가능

음수를 사용하면 맨 마지막 member가 -1, 다음 member가 -2 이렇게 지정된다.
start <= stop 일때 조회된다. stop에 -1 사용일때는 예외임.

Example

명령>zrange myzip -3 -1 withscores
결과> -3) 4 -> 인천
-2) 5 -> 대구
-1) 6 -> 광주

애니메이션 보기


score가 같으면 member로 sort 됨

Example

명령>del myzip
결과>1
명령>zadd myzip  10 "충청"  10 "전라"  10 "서울"  10 "경기"  10 "부산"
결과>5
명령>zrange myzip 0 -1 withscores
결과> 0) 10 -> 경기
1) 10 -> 부산
2) 10 -> 서울
3) 10 -> 전라
4) 10 -> 충청

JOIN(조인) 기능

JOIN(조인)은 ZSet key1의 멤버와 다른 ZSet key2의 멤버를 조인해서 key1의 value, score와 key2의 score를 한번에 조회합니다.
예) 글(포스트) 관리:
post-view 키에 멤버 post-id(post-100, post-101, ...), 조회수를 스코어로 넣고, post-good 키에 좋아요수, post-bad에 싫어요수를 넣는다.
ZADD post-view 100 post-100 101 post-101 102 post-102
ZADD post-good 70 post-100 71 post-101 72 post-102
ZADD post-bad 20 post-100 21 post-101 22 post-102

Example

명령>zrange post-view 0 -1 withscores JOIN post-good JOIN post-bad table
결과> 0) "value"       "post-view" "post-good" "post-bad"
1) "post-100" "100"           "70"               "20"
2) "post-101" "101"           "71"               "21"
3) "post-102" "102"           "72"               "22"
조인 기능은 Enterprise 서버에서 사용 가능합니다.

Hash 키와 조인

Hash 키에 post-id 별로 userid, title, content를 저장한다.
hset post-100 userid user-100 title Title-A content content-A
hset post-101 userid user-101 title Title-B content content-B
hset post-102 userid user-102 title Title-C content content-C

Example

명령>zrange post-view 0 -1 withscores JOIN post-good JOIN post-bad JOIN hmget * userid title content
table
결과> 0) "value"       "post-view" "post-good" "post-bad" "userid"      "title"     "content"
1) "post-100" "100"           "70"               "20"             "user-100" "Title-A" "Content-A"
2) "post-101" "101"           "71"               "21"             "user-101" "Title-B" "Content-B"
3) "post-102" "102"           "72"               "22"             "user-102" "Title-C" "Content-C"

String 키와 조인

String 키에 user-id 별로 user 정보를 저장한다.
set user-100 "Kim,kim@naver.com"
set user-101 "Yun,yun@naver.com"
set user-102 "Tae,tae@naver.com"

Example

명령>zrange post-view 0 -1 withscores JOIN post-good JOIN post-bad JOIN hmget * userid title content
JOIN get userid table
결과> 0) "value"       "post-view" "post-good" "post-bad" "userid"      "title"     "content" "userid"
1) "post-100" "100"           "70"               "20"         "user-100" "Title-A" "Content-A" "Kim,kim@naver.com"
2) "post-101" "101"           "71"               "21"         "user-101" "Title-B" "Content-B" "Yun,yun@naver.com"
3) "post-102" "102"           "72"               "22"         "user-102" "Title-C" "Content-C" "Tae,tae@naver.com"


명령문

ZRANGE key start stop [withscores] [JOIN zset-key JOIN hmget * field1 field2 JOIN get field1]

  • 이 명령은 version 1.2.0 부터 사용할 수 있습니다.
  • JOIN은 Enterprise version에서 사용할 수 있습니다.
  • 논리적 처리 소요시간은 O(log(N)+M)이다. N은 집합의 member 개수이고, M은 리턴하는 member의 개수입니다.
관련 명령 ZREVRANGE, LRANGE,
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

명령을 실습해 보시려면 여기를 클릭해서 Redis Web Client 를 실행하세요.


<< ZREM ZRANGE ZCARD >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.