zrevrangebyscore

1. 基本語法

zrevrangebyscore(key, max:<number|string>, min:<number|string>, ['WITHSCORES'], ['LIMIT', offset, count], callback)

於有序集合中,篩選分數範圍介在與maxmin之間的成員,根據分數「由大到小」回傳成員名單(這點與zrangebyscore相反)。可再透過WITHSCORES參數同時回傳成員及分數;或根據LIMIT參數,透過偏移位置offset與數量count篩選區間成員。

特殊字串

適用參數

功能

-Inf

min

對應分數為負無限小

Inf 或 +inf

max

對應分數為正無限大

(

minmax

預設分數區間包含邊界值(閉集合); 加「 ( 」則區間將不包含邊界值(開集合)

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的所有成員,並依分數「由小到大」或「由大到小」排列

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?