redisにおけるSet集合SortSet秩序化集合の複製


redisにおけるSet集合SortSet秩序化集合の複製
redisコレクションタイプにはレプリケーションコマンドはありません.私が言ったレプリケーションは、redisの他のコマンドによって実現されます.
需要:key 1の内容をすべてkey 2にコピーします.次に、redisでどのように処理するかを見てみましょう.
セットのコピー
まず、key 1のセットを作成します.key 2はまだ作成されていません.
127.0.0.1:6380[1]> SADD key1 "a"
(integer) 1
127.0.0.1:6380[1]> SADD key1 "b"
(integer) 1
127.0.0.1:6380[1]> SADD key1 "c"
(integer) 1
127.0.0.1:6380[1]> smembers key1
1) "b"
2) "a"
3) "c"

キー1をキー2にコピーします
127.0.0.1:6380[1]> SUNIONSTORE key2 key1 temp
(integer) 3
127.0.0.1:6380[1]> smembers key1
1) "b"
2) "a"
3) "c"
127.0.0.1:6380[1]> smembers key2
1) "a"
2) "b"
3) "c"
127.0.0.1:6380[1]> smembers temp
(empty list or set)
  • 上の例のtempは存在しないkey
  • である.
    key 2が既に存在するkeyであればコピーも可能であるが,この場合,key 1のすべてのコンテンツをkey 2に移動する.
    127.0.0.1:6380[1]> SADD key1 "d"
    (integer) 1
    127.0.0.1:6380[1]> SADD key1 "e"
    (integer) 1
    127.0.0.1:6380[1]> smembers key1
    1) "d"
    2) "b"
    3) "a"
    4) "c"
    5) "e"
    127.0.0.1:6380[1]> SUNIONSTORE key2 key1 temp
    (integer) 5
    127.0.0.1:6380[1]> smembers key2
    1) "a"
    2) "b"
    3) "d"
    4) "c"
    5) "e"
    127.0.0.1:6380[1]> smembers temp
    (empty list or set)

    SUIONSTOREコマンドを使用すると、Setのレプリケーションが容易に実現できます.次に、SUIONSTOREコマンドの使用方法を見てみましょう.構文:
    SUNIONSTORE destination key [key ...]
  • destination:マージ結果セットのkeyを格納します.
  • key[key...]:1つまたは複数のセット
  • 注:既に存在するコレクションの場合、元のデータは削除され、マージ結果のみが保持されます.次に、key 3のメンバー「g」を作成しますが、key 1とkey 2をSUMINSTOREコマンドでマージすると、結果に「g」はありません.
    127.0.0.1:6380[1]> sunionstore key3 key1 key2
    (integer) 5
    127.0.0.1:6380[1]> sadd key1 f h i
    (integer) 3
    127.0.0.1:6380[1]> sadd key3 g
    (integer) 1
    127.0.0.1:6380[1]> smembers key3
    1) "b"
    2) "a"
    3) "e"
    4) "d"
    5) "c"
    6) "g"
    127.0.0.1:6380[1]> smembers key1
    1) "a"
    2) "b"
    3) "e"
    4) "d"
    5) "i"
    6) "h"
    7) "c"
    8) "f"
    127.0.0.1:6380[1]> sunionstore key3 key1 key2
    (integer) 8
    127.0.0.1:6380[1]> smembers key3
    1) "b"
    2) "a"
    3) "i"
    4) "h"
    5) "e"
    6) "d"
    7) "c"
    8) "f"
    

    SortSet秩序化集合のレプリケーション
    まず、zset 2というkeyがない場合に秩序化された集合zset 1を作成します.
    127.0.0.1:6380[1]> zadd zset1 1 a 2 b 3 c 4 d 5 e
    (integer) 5
    127.0.0.1:6380[1]> zrange zset1 0 -1
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "e"

    そしてzset 1をzset 2にコピー
    127.0.0.1:6380[1]> ZUNIONSTORE zset2 1 zset1
    (integer) 5

    ヒントは5つの内容が処理され、zset 2の現在の内容を見てみましょう.
    127.0.0.1:6380[1]> zrange zset2 0 -1
    1) "a"
    2) "b"
    3) "c"
    4) "d"
    5) "e"

    かっこいい!zset 1の内容とそっくりです.これはすべてZUNIONTOREというコマンドのおかげです.次に、このZUNIONTOREコマンドの使い方を説明しましょう.
    ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [SUM|MIN|MAX]

    ZUNIOnstorEコマンドは、実はパラレルセットを求めるコマンドで、彼のパラメータは以下のように説明されています.
  • destination:マージ結果セットのkeyを格納します.既に存在するコレクションの場合、元のデータは削除され、マージ結果のみが保持されます.
  • numkeys:いくつかのセットの内容を統合する必要があります
  • key[key...]:1つまたは複数のセット
  • [WEIGHTS weight]:スコア積係数、デフォルトは1.設定後、集計時に集計対象のセットのスコアに積係数を乗算し、結果を集計結果セットに保存します.
  • [SUM|MIN|MAX]:結果セットの集約方式.デフォルトはSUMです.マージするコレクションに同じ名前の要素がある場合、そのスコアが新しい結果セットにどのように格納されますか.SUM:加算;MIN:最小値を取る;MAX:最大値をとります.