zrange
ZRANGE
![]() |
![]() 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 -> 광주 |
일부분만 조회할 때
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 사용일때는 예외임.
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 -> 충청 |
역순으로 조회하려면 REV 옵션 사용
역순으로 조회하려면 REV 옵션 사용합니다.
이 기능은 버전 6.2부터 사용할 수 있습니다.
이 옵션은 ZREVRANGE 명령과 같은 기능을 합니다.
이 옵션은 다음에 설명할 BYSCORE, BYLEX와 같이 사용할 수 없습니다.
Example
명령> | zadd mycity 10 Seoul 20 Busan 30 Daegu 40 Incheon 50 Gwangju 60 Gyeonggi |
결과> | 6 |
명령> | zrange mycity 0 -1 |
결과> |
1) "Seoul" 2) "Busan" 3) "Daegu" 4) "Incheon" 5) "Gwangju" 6) "Gyeonggi" |
명령> | zrange mycity 0 -1 rev |
결과> |
1) "Gyeonggi" 2) "Gwangju" 3) "Incheon" 4) "Daegu" 5) "Busan" 6) "Seoul" |
스코어를 조회 조건으로 사용하려면 BYSCORE
스코어를 조회 조건으로 사용하려면 BYSCORE 옵션을 사용합니다.
이 옵션은 미포함'('을 사용할 수 있습니다.
이 기능은 버전 6.2부터 사용할 수 있습니다.
이 옵션은 ZRANGEBYSCORE 명령과 같은 기능을 합니다.
Example
명령> | zrange mycity 10 50 byscore |
결과> |
1) "Seoul" 2) "Busan" 3) "Daegu" 4) "Incheon" 5) "Gwangju" |
명령> | zrange mycity (10 (50 byscore |
결과> |
1) "Busan" 2) "Daegu" 3) "Incheon" |
값(멤버)을 조회 조건으로 사용하려면 BYLEX
값(멤버)을 조회 조건으로 사용하려면 BYLEX 옵션을 사용합니다.
이 옵션은 반드시 포함'[' 또는 미포함'('을 사용해야 합니다.
모두 조회하려면 - +를 사용합니다.
이 옵션은 score가 모두 같아야 원하는 결과를 얻을 수 있습니다.
이 기능은 버전 6.2부터 사용할 수 있습니다.
이 옵션은 ZRANGEBYLEX 명령과 같은 기능을 합니다.
Example
명령> | zadd mycity2 0 Seoul 0 Busan 0 Daegu 0 Incheon 0 Gwangju 60 Gyeonggi |
결과> | 6 |
명령> | zrange mycity2 [Busan [Incheon bylex |
결과> |
1) "Busan" 2) "Daegu" 3) "Gwangju" 4) "Gyeonggi" 5) "Incheon" |
명령> | zrange mycity2 (Busan (Incheon bylex |
결과> |
1) "Daegu" 2) "Gwangju" 3) "Gyeonggi" |
개수를 제한하려면 LIMIT 옵션 사용
개수를 제한하려면 LIMIT offset count 옵션 사용합니다.
이 옵션은 BYSCORE, BYLEX를 사용했을 경우만 사용할 수 있습니다.
이 기능은 버전 6.2부터 사용할 수 있습니다.
Example
명령> | zrange mycity 10 50 byscore limit 0 3 |
결과> |
1) "Seoul" 2) "Busan" 3) "Daegu" |
명령> | zrange mycity2 [Busan [Incheon bylex limit 1 3 |
결과> |
1) "Daegu" 2) "Gwangju" 3) "Gyeonggi" |
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 [REV] [[BYSCORE|BYLEX] [LIMIT offset count]] [withscores]
[JOIN zset-key JOIN hmget * field1 field2 JOIN get field1]
- 이 명령은 version 1.2.0 부터 사용할 수 있습니다.
- REV, BYSCORE|BYLEX, LIMIT offset count 옵션은 버전 6.2부터 사용할 수 있습니다.
- JOIN은 Enterprise version에서 사용할 수 있습니다.
- 논리적 처리 소요시간은 O(log(N)+M)이다. N은 집합의 member 개수이고, M은 리턴하는 member의 개수입니다.
SQL Select | Redis Enterprise 7.3.0 이상이면 SELECT를 사용해보세요. |
관련 명령 | ZREVRANGE, LRANGE, |
Clients for Java | Jedis, Lettuce, Redisson | Clients for C | Hiredis |
<< ZINCRBY | ZRANGE | ZLS >> |
---|