zrevrangebylex
1. 基本語法
zrevrangebylex(key
, max:<string>
, min:<string>
, ['LIMIT', offset, count]
,callback
)
key
, max:<string>
, min:<string>
, ['LIMIT', offset, count]
,callback
) 有序集合中若成員分數相同,可強制依字典序(lexicographic ordering)「由大到小」排列成員,並透過max
、min
與LIMIT
參數進一步篩選字典序範圍,並回傳區間成員(不含分數)。
特殊字串
適用參數
功能
-
min
對應值為負無限小的字符串
+
max
對應值為正無限大的字符串
(
min
、max
區間邊界,不包含邊界成員(開集合)
[
min
、max
區間邊界,包含邊界成員(閉集合)
2. 範例
(1) 創建一組分數相同的有序集合
client.del('zset:1');
const key1 = 'zset:1'
const members1 = ['c', 'a', 'C', 'A', 'B', 'b'];
const scores1 = [0, 0, 0, 0, 0, 0];
members1.forEach((mem, ind) => {
client.zadd(key1, scores1[ind], mem);
}
client.zrange(key1, 0, -1, 'WITHSCORES', (err, obj) =>{
console.log(key1, ':', obj);
});
zset:1 : ['A', '0', 'B', '0', 'C', '0', 'a', '0', 'b', '0', 'c', '0']
(2) 可利用特殊符號「 + 」、「 - 」返回字典排序後的所有集合成員
若不標示參數名稱,zrangebylex先輸入min
,再輸入max
;
反之,zrevrangebylex則是先輸入max
,再輸入min
client.zrangebylex(key1, '-', '+', (err, obj) =>{
console.log('zrangebylex :', obj);
});
client.zrevrangebylex(key1, '+', '-', (err, obj) =>{
console.log('zrevrangebylex :', obj);
});
zrangebylex : [ 'c', 'a', 'A', 'C', 'B', 'b' ]
zrevrangebylex : [ 'b', 'B', 'C', 'A', 'a', 'c' ]
Last updated
Was this helpful?