Redis スコアの和集合を取得する

Redisで、スコアの和集合を取得する手順を記述してます。「zunionstore」で可能です。
環境
- OS CentOS Stream release 9
- Redis 7.0.5
手順
スコアの和集合を取得するには、「zunionstore」を使用します。
zunionstore 和集合するキー名 和集合する数 キー名 キー名 キー名
以下のスコアを作成して、和集合を取得してみます。
127.0.0.1:6379> zadd zs1 1 aaa 2 bbb 3 ccc
(integer) 3
127.0.0.1:6379> zadd zs2 1 aaa 3 ccc 4 ddd
(integer) 3
和集合を実行してみます。
127.0.0.1:6379> zunionstore union1 2 zs1 zs2
(integer) 4
確認します。
※「zrange」に「0」から「-1」を指定すると全件取得することができます。
127.0.0.1:6379> zrange union1 0 -1 withscores
1) "aaa"
2) "2"
3) "bbb"
4) "2"
5) "ddd"
6) "4"
7) "ccc"
8) "6"
3つのキーで実行してみます。
127.0.0.1:6379> zadd zs3 1 aaa
(integer) 1
127.0.0.1:6379> zunionstore union1 3 zs1 zs2 zs3
(integer) 4
127.0.0.1:6379> zrange union1 0 -1 withscores
1) "bbb"
2) "2"
3) "aaa"
4) "3"
5) "ddd"
6) "4"
7) "ccc"
8) "6"
3つのキーの和集合が取得されていることが確認できます。
WEIGHTSオプション
WEIGHTSを使用すると、各値が指定した値の倍になって計算されます。
zs1を2倍に、zs2を3倍にして和集合を求めてみます。
127.0.0.1:6379> zrange zs1 0 -1 withscores
1) "aaa"
2) "1"
3) "bbb"
4) "2"
5) "ccc"
6) "3"
127.0.0.1:6379> zrange zs2 0 -1 withscores
1) "aaa"
2) "1"
3) "ccc"
4) "3"
5) "ddd"
6) "4"
127.0.0.1:6379> zunionstore union1 2 zs1 zs2 weights 2 3
(integer) 4
127.0.0.1:6379> zrange union1 0 -1 withscores
1) "bbb"
2) "4"
3) "aaa"
4) "5"
5) "ddd"
6) "12"
7) "ccc"
8) "15"
-
前の記事
MariaDB パーティションを使用する 2023.02.20
-
次の記事
Rust ベクタ(可変配列)が空であるかを判定する 2023.02.20
コメントを書く