zunionstore
1. 基本語法
zunionstore(destination, numkeys, key[, key, ...], ["WEIGHTS", weight[, weight, ...], ["AGGREGATE", SUM|MIN|MAX])
destination, numkeys, key[, key, ...], ["WEIGHTS", weight[, weight, ...], ["AGGREGATE", SUM|MIN|MAX]) 計算numkeys個有序集合的成員聯集,並將聯集成員新增至destination有序集合,成員若有交集,則交集成員的新分數預設為既有分數之加總SUM,可另設置每個key的加權分數weight,或另更改新分數計算方式SUM|MIN|MAX。
2. 範例
(1) 先創建兩個有序集合
client.del('zset:1', 'zset:2');
const key1 = 'zset:1'
const members1 = ['A', 'B', 'C', 'D'];
const scores1 = [1, 3, 5, 7, 9];
const key2 = 'zset:2'
const members2 = ['C', 'D', 'E', 'F', 'G'];
const scores2 = [0, 2, 4, 6, 8, 10];
members1.forEach((mem, ind) => {
client.zadd(key1, scores1[ind], mem);
})
client.zrange(key1, 0, -1, 'WITHSCORES', (err, obj) =>{
console.log(key1, ':', obj);
});
members2.forEach((mem, ind) => {
client.zadd(key2, scores2[ind], mem);
})
client.zrange(key2, 0, -1, 'WITHSCORES', (err, obj) =>{
console.log(key2, ':', obj);
});(2) 計算兩個有序集合的聯集
member
key1
key2
SUM
...
...
...
...
C
5
0
5
D
7
2
9
...
...
...
...
(3) 若有交集,則交集成員分數改以「加權分數」計算
member
key1 * weight1
key2 * weight2
Weighted SUM
...
...
...
...
C
5 * 1 = 5
0 * 10 = 0
5
D
7 * 1 = 7
2 * 10 = 20
27
...
...
...
...
(4) 若有交集,則交集成員分數改以「最小值」計算
member
key1
key2
MIN
...
...
...
...
C
5
0
0
D
7
2
2
...
...
...
..
Last updated
Was this helpful?