zrangebyscore
1. 基本語法
zrangebyscore(key, min:<number|string>, max:<number|string>, ['WITHSCORES'], ['LIMIT', offset, count], callback)
key, min:<number|string>, max:<number|string>, ['WITHSCORES'], ['LIMIT', offset, count], callback) 於有序集合中,篩選分數範圍介在min與max之間的成員,根據分數「由小到大」回傳成員名單(這點與zrevrangebyscore相反)。可再透過WITHSCORES參數同時回傳成員及分數;或根據LIMIT參數,透過偏移位置offset與數量count篩選區間成員。
特殊字串
適用參數
功能
-Inf
min
對應分數為負無限小
Inf 或 +inf
max
對應分數為正無限大
(
min、max
預設分數區間包含邊界值(閉集合); 加「 ( 」則區間將不包含邊界值(開集合)
2. 範例
(1) 創建一組分數不完全相同的有序集合
client.del('zset:1');
const key1 = 'zset:1'
const members1 = ['c', 'a', 'C', 'A', 'B', 'b'];
const scores1 = [-2, -1, 0, 0, 1, 2];
members1.forEach((mem, ind) => {
client.zadd(key1, scores1[ind], mem);
})
client.zrange(key1, 0, -1, 'WITHSCORES', (err, obj) =>{
console.log(key1, ':', obj);
});(2) 篩選分數範圍:分數大於等於0以上的所有成員
成員
c
a
A
C
B
b
分數
-2
-1
0
0
1
2
(3) 透過LIMIT參數進一步擷取區間成員:
成員
c
a
A
C
B
b
分數
-2
-1
0
0
1
2
(-1, 2]
x
x
o
o
o
o
offset = 1
x
x
0
1
2
3
count = 2
x
x
-
o
o
-
Last updated
Was this helpful?