Redis SortedSet

SortedSet 有序集合函數

一個Set集合,可是內部經過score進行排序,排序值從 0 開始。大數據

 

一、添加排序

>zadd key score member [[score member] [score member] ...]ip

將一個或多個 member 元素及其 score 值加入到有序集 key 當中。若是某個 member 已是有序集的成員,那麼更新這個 member 的 score 值,並經過從新插入這個 member 元素,來保證該 member 在正確的位置上。ci

 

二、求總數rem

>zcard key字符串

返回有序集 key 的總數。io

 

>zcount key min maxfunction

返回有序集 key 中, score 值在 min 和 max 之間(默認包括 score 值等於 min 或 max )的成員的數量,注意返回的是數量。遍歷

 

>zlexcount key min max

對於一個全部成員的分值都相同的有序集合鍵 key 來講, 這個命令會返回該集合中, 成員介於 min 和 max 範圍內的元素數量。

 

三、刪除

>zrem key member [member ...]

移除有序集 key 中的一個或多個成員,不存在的成員將被忽略。

 

>zremrangebyrank key start end

移除有序集 key 中,指定排名(rank)區間內的全部成員,包含start 和 end

 

>zremrangebyscore key min max

移除有序集 key 中,全部 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。

 

>zremrangebylex key min max

對於一個全部成員的分值都相同的有序集合鍵 key 來講, 這個命令會移除該集合中, 成員介於 min 和 max 範圍內的全部元素。

 

四、查找

>zrange key start end [WITHSCORES]

返回有序集 key 中,指定排名區間內(包含start 和 end )的成員。其中成員的位置按 score 值遞增(從小到大)來排序。具備相同 score 值的成員按字典序(lexicographical order)來排列。

WITHSCORES 選項決定是否返回對應的分數。

 

>zrevrange key start end [WITHSCORES]

和zrange 做用相同,區別是返回的成員是按 score 值遞減(從大到小)來排序。

 

>zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

返回有序集 key 中,全部 score 值介於 min 和 max 之間(包括等於 min 或 max )的成員。有序集成員按 score 值遞增(從小到大)次序排列。

具備相同 score 值的成員按字典序(lexicographical order)來排列。

可選的 LIMIT 參數指定返回結果的數量及區間(就像SQL中的 SELECT LIMIT offset, count ),注意當 offset 很大時,定位 offset 的操做可能須要遍歷整個有序集,此過程最壞複雜度爲 O(N) 時間.

 

>zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]

和zrangebyscore做用相同,區別是返回的成員是按 score 值遞減(從大到小)來排序。

 

>zrangebylex key min max [LIMIT offset count]

當有序集合的全部成員都具備相同的分值時, 有序集合的元素會根據成員的字典序(lexicographical ordering)來進行排序, 而這個命令則能夠返回給定的有序集合鍵 key 中, 值介於 min 和 max 之間的成員。若是有序集合裏面的成員帶有不一樣的分值, 那麼命令返回的結果是未指定的(unspecified)。

 

五、排名與取值

>zrank key member

返回有序集 key 中成員 member 的排名。成員按 score 值遞增(從小到大)順序排列而後再取member的排名,排名從0開始。

 

>zrevrank key member

返回有序集 key 中成員 member 的排名。成員按 score 值遞減(從大到小)排列的排名而後再取 member的排名,排名從0開始。

 

>zscore key member

返回有序集 key 中,成員 member 的 score 值。

 

 

六、i++

>zincrby key increment member

爲有序集 key 的成員 member 的 score 值加上增量 increment 。

 

>zscan key cursor [MATCH pattern] [COUNT count]

根據遊標的位置查找指定數量的元素,由於是批量獲取,因此不會在大數據狀況下堵塞

 

七、集合運算

>zunionstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

1)計算給定的一個或多個有序集的並集,其中給定 key 的數量必須以 numkeys 參數指定,並將該並集(結果集)儲存到 destination 。

2)默認狀況下,結果集中某個成員的 score 值是全部給定集下該成員 score 值之和 。

3)WEIGHTS

使用 WEIGHTS 選項,你能夠爲 每一個 給定有序集 分別 指定一個乘法因子(multiplication factor),每一個給定有序集的全部成員的 score 值在傳遞給聚合函數(aggregation function)以前都要先乘以該有序集的因子。若是沒有指定 WEIGHTS 選項,乘法因子默認設置爲 1 。

4)AGGREGATE

使用 AGGREGATE 選項,你能夠指定並集的結果集的聚合方式。默認使用的參數 SUM ,能夠將全部集合中某個成員的 score 值之 和 做爲結果集中該成員的 score 值;使用參數 MIN ,能夠將全部集合中某個成員的 最小 score 值做爲結果集中該成員的 score 值;而參數 MAX 則是將全部集合中某個成員的 最大 score 值做爲結果集中該成員的 score 值。

 

>zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

計算給定的一個或多個有序集的交集,其中給定 key 的數量必須以 numkeys 參數指定,並將該交集(結果集)儲存到 destination 。默認狀況下,結果集中某個成員的 score 值是全部給定集下該成員 score 值之和.

 

 

注意:

lexicographical ordering (就是字符串的ASCII排序)排序指定範圍規則

1)合法的 min 和 max 參數必須包含 ( 或者 [ , 其中 ( 表示開區間(指定的值不會被包含在範圍以內), 而 [ 則表示閉區間(指定的值會被包含在範圍以內)。

2)特殊值 + 和 - 在 min 參數以及 max 參數中具備特殊的意義, 其中 + 表示正無限, 而 - 表示負無限。 所以, 向一個全部成員的分值都相同的有序集合發送命令 ZRANGEBYLEX <zset> - + , 命令將返回有序集合中的全部元素。

3)示例 zrangebylex set [liu + 查找包含liu和排序在liu以後的全部元素。

相關文章
相關標籤/搜索