zunionstore
ZUNIONSTORE
Redis Developer Course | Redis Technical Support | Redis Enterprise Server |
---|
합집합을 구해서 새로운 집합에 저장
사용법은 zunionstore dest_key 2 src_key1 src_key2 이다.
결과 집합은 지정한 dest_key에 저장된다. 각 member의 score는 더해진다.
src_key1 = { (1,A), (2,B), (3,C) }
src_key2 = { (4,B), (5,C), (6,D) }
dest_key = { (1,A), (6,B),
(8,C), (6,D)}
Example
명령> | zadd src_key1 1 A 2 B 3 C |
결과> | 3 |
명령> | zadd src_key2 4 B 5 C 6 D |
결과> | 3 |
명령> | zunionstore dest_key 2 src_key1 src_key2 |
결과> | 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에 곱해진다.
src_key1 = { (1,A), (2,B), (3,C) } -> { (1*2,A), (2*2,B), (3*2,C) }
src_key2 = { (4,B), (5,C), (6,D) } ->
{ (4*3,B), (5*3,C), (6*3,D) }
dest_key = { (2,A),
(4+12,B),
(6+15,C),
(18,D)}
= { (2,A),
(16,B),
(21,C),
(18,D)}
Example
명령> | zunionstore dest_key 2 src_key1 src_key2 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를 취한다.
src_key1 = { (1,A), (2,B), (3,C) }
src_key2 = { (4,B), (5,C), (6,D) }
min일 경우 dest_key = { (1,A), (2,B),
(3,C), (6,D)}
max일 경우 dest_key = { (1,A), (4,B),
(5,C), (6,D)}
Example
명령> | zunionstore dest_key 2 src_key1 src_key2 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 src_key1 src_key2 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 src_key1 src_key2 src_key3 이다.
src_key1 = | { (1,A), | (2,B), | (3,C) | } | |
src_key2 = | { | (4,B), | (5,C) | (6,D) | } |
src_key3 = | { | (7,C) | (8,D) | (9,E) } | |
dest_key = | { (1,A), | (6,B), | (15,C) | (14,D) | (9,E) } |
Source key를 desctination key에 지정 가능
ZUNIONSTORE src_key1 2 src_key1 src_key2
src_key1의 기존 내용은 지워지고, 결과가 src_key1에 들어간다.
명령문
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 |
<< ZDIFF | ZUNIONSTORE | ZINTERSTORE >> |
---|