zunionstore
ZUNIONSTORE
Redis 開発者教育の申込
|
Redis 定期点検/技術サポートRedis Technical Support |
Redis エンタープライズサーバー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 に乗算され、2番目の 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 |
3つの集合の和集合を求めて保存
使い方は 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 を destination 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 >> |
|---|
