ZUNIONSTORE

<< ZINCRBY ZINTERSTORE >>

합집합을 구해서 새로운 집합에 저장

사용법은 zunionstore dest_key 2 src_key1 src_key2 이다.
결과 집합은 지정한 dest_key에 저장된다. 각 member의 score는 더해진다.
myset1 = { (1,A), (2,B), (3,C) }
myset2 = { (4,B), (5,C), (6,D) }
ZUNIONSTORE dest_key 2 myset1 myset2 = { (1,A), (6,B), (8,C), (6,D)}

Example

명령>zadd myset1 1 A 2 B 3 C
결과>3
명령>zadd myset2 4 B 5 C 6 D
결과>3
명령>zunionstore dest_key 2 myset1 myset2
결과>4
명령>zrange dest_key 0 -1 withscores
결과> 0) 1 -> A
1) 6 -> B
2) 6 -> D
3) 8 -> C

애니메이션 보기



weights 사용

사용법은 zunionstore dest_key 2 src_key1 src_key2 weights 2 3 이다.
첫 번째 weight 2는 src_key1의 각 score에 곱해지고, 두 번째 weight 3는 src_key2의 각 score에 곱해진다.
myset1 = { (1,A), (2,B), (3,C) } -> { (1*2,A), (2*2,B), (3*2,C) }
myset2 = { (4,B), (5,C), (6,D) } -> { (4*3,B), (5*3,C), (6*3,D) }
ZUNIONSTORE dest_key 2 myset1 myset2 weights 2 3
= { (2,A), (4+12,B), (6+15,C), (18,D)}
= { (2,A), (16,B),     (21,C),    (18,D)}

Example

명령>zunionstore dest_key 2 myset1 myset2 weights 2 3
결과>4
명령>zrange dest_key 0 -1 withscores
결과> 0) 2 -> A
1) 16 -> B
2) 18 -> D
3) 21 -> C

애니메이션 보기



aggregate 사용

사용법은 zunionstore dest_key 2 src_key1 src_key2 aggregate sum|min|max 이다.
sum은 각 score를 합한다. aggregate를 지정하지 않으면 sum 이 default이므로 sum으로 계산된다.
min은 각 member에서 적은 score를 취하고, max는 큰 score를 취한다.
myset1 = { (1,A), (2,B), (3,C) }
myset2 = { (4,B), (5,C), (6,D) }

min일 경우 ZUNIONSTORE dest_key 2 myset1 myset2 aggregate min = { (1,A), (2,B), (3,C), (6,D)}
max일 경우 ZUNIONSTORE dest_key 2 myset1 myset2 aggregate max = { (1,A), (4,B), (5,C), (6,D)}

Example

명령>zunionstore dest_key 2 myset1 myset2 aggregate min
결과>4
명령>zrange dest_key 0 -1 withscores
결과> 0) 1 -> A
1) 2 -> B
2) 3 -> C
3) 6 -> D
명령>zunionstore dest_key 2 myset1 myset2 aggregate max
결과>4
명령>zrange dest_key 0 -1 withscores
결과> 0) 1 -> A
1) 4 -> B
2) 5 -> C
3) 6 -> D

애니메이션 보기



세개 집합의 합집합을 구해서 저장

사용법은 zunionstore dest_key 3 myset1 myset2 myset3 이다.

myset1 ={ (1,A),(2,B),(3,C)}
myset2 = {(4,B),(5,C)(6,D)}
myset3 = { (7,C)(8,D)(9,E) }
dest_key ={ (1,A),(6,B),(15,C)(14,D)(9,E) }
source key의 갯수에는 제한이 없다.



source key를 desctination key에 지정 가능

ZUNIONSTORE myset1 2 myset1 myset2
myset1의 기존 내용은 지워지고, 결과가 myset1에 들어간다.



명령문

ZUNIONSTORE dest_key numkeys src_key [src_key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

  • 이 명령은 version 2.0.0 부터 사용할 수 있다.
  • 논리적 처리 소요시간은 O(N)+O(M log(M))이다. N은 입력 집합들의 총 member 수이고, M은 결과 집합의 member 수이다.
관련 명령 ZINTERSTORE, SINTERSTORE, SUNIONSTORE, SDIFFSTORE
Clients for Java Jedis, Lettuce, Redisson
Clients for C Hiredis

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


<< ZINCRBY ZUNIONSTORE ZINTERSTORE >>

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

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