zrevrangebyscore
1. 基本語法
zrevrangebyscore(key
, max:<number|string>
, min:<number|string>
, ['WITHSCORES']
, ['LIMIT', offset, count]
, callback
)
key
, max:<number|string>
, min:<number|string>
, ['WITHSCORES']
, ['LIMIT', offset, count]
, callback
) 於有序集合中,篩選分數範圍介在與max
與min
之間的成員,根據分數「由大到小」回傳成員名單(這點與zrangebyscore相反)。可再透過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);
});
zset:1 : ['c', '-2', 'a', '-1', 'A', '0', 'C', '0', 'B', '1', 'b', '2']
(2) 篩選分數範圍:分數大於等於0的所有成員,並依分數「由小到大」或「由大到小」排列
若不標示參數名稱,zrangebyscore先輸入min
,再輸入max
;
反之,zrevrangebyscore則是先輸入max
,再輸入min
client.zrangebyscore(key1, 0, 'inf', (err, obj) =>{
console.log('zrangebyscore :', obj);
});
client.zrevrangebyscore(key1, 'inf', 0, (err, obj) =>{
console.log('zrevrangebyscore :', obj);
});
zrangebyscore : [ 'A', 'C', 'B', 'b' ]
zrevrangebyscore : [ 'b', 'B', 'C', 'A' ]
Last updated
Was this helpful?