一、概述
- redis有序集合和集合一樣,也是string類型元素的集合,且不允許重復的成員。
- 不同的是每個元素都會關聯一個double類型的分數。
- redis正式通過分數來為集合中的重圓進行從小到大的排序。
- 有序集合的成員是唯一的,但分數(score)卻可以重復。
- 集合中最大的成員數為2^32-1。
二、sortedset鍵的設置
- 命令名稱:zadd
- 語法:zadd key [NX|XX] [CH] [INCR] score member [score member ...]
- 功能:
- 將一個或多個member元素及其score值加入到有序集key當中。
- 如果某個member已經是有序集的成員,那么更新這個member的score值,並通過重新插入這個member元素,來保證該member在正確的位置上。
- score值可以是整數值或雙精度浮點數。
- 如果key不存在,則創建一個空的有序集並執行zadd操作。
- 當key存在但不是有序集類型時,返回一個錯誤。
- 返回值:
- 被成功添加的新成員的數量,不包括那些被更新的、已經存在的成員
- 命令名稱:zincrby
- 語法:zincrby key increment member
- 功能:
- 為有序集key的成員member的score值加上增量increment(可負)。
- 當key不存在,或member不是key的成員時,zincrby等同於zadd
- 返回值:
- 當key不是有序集類型時,返回一個錯誤。member成員的新score值,以字符串形式表示。
三、sortedset鍵的查詢
- 命令名稱:zcard
- 語法:zcard key
- 功能:
- 返回有序集合key的基數(有序集合中元素的數量)
- 返回值:
- 當key存在且是有序集類型時,返回有序集的基數。
- 當key不存在時,返回0
- 命令名稱:zcount
- 語法:zcount key min max
- 功能:
- 返回有序集合key中,score值在min和max之間(默認包括score值等於min或max)的成員的數量。
- 返回值:
- score值在min和max之間的成員的數量。
- 命令名稱:zrange
- 語法:zrange key start stop [withscores]
- 功能:
- 返回有序集key中,指定區間內的成員。
- 其中成員的位置按score值遞增(從小到大)來排序。
- 返回值:
- 指定區間內,帶有score值(可選)的有序集成員的額列表。
- 命令名稱:zrangebyscore
- 語法:zrangebyscore key min max [withscores] [limit offset count]
- 功能:
- 返回有序集key中,所有score值介於min和max之間(包括等於min或max)的成員。有序集成員按score值遞增(從小到大)次序排列。
- 返回值:
- 指定區間內,帶有score值(可選)的有序集成員的列表。
- 命令名稱:zrank
- 語法:zrank key member
- 功能:
- 返回有序集key中成員member的排名。其中有序集成員按score值遞增(從小到大)順序排列。
- 排名以0為底,也就是說,score值最小的成員排名為0.
- 返回值:
- 如果member是有序集key的成員,返回member的排名。
- 如果member不是有序集key的成員,返回nil。
- 命令名稱:zrevrange
- 語法:zrevrange key start stop [withscores]
- 功能:
- 返回有序集key中,指定區間內的成員。
- 其中成員的位置按score值遞減(從大到小)來排列
- 返回值:
- 指定區間內,帶有score值(可選)的有序集成員的列表。
- 命令名稱:zrevrangebyscore
- 語法:zrevrangebyscore key max min [withscores] [limit offset count]
- 功能:
- 返回有序集key中,score值介於max和min之間(默認包括等於max或min)的所有成員。有序集成員按score值遞減(從大到小)的次序排列。
- 返回值:
- 指定區間內,帶有score值(可選)的有序集成員的列表。
- 命令名稱:zrevrank
- 語法:zrevrank key member
- 功能:
- 返回有序集key中成員member的排名。其中有序集成員按score值遞減順序排列。
- 排名以0為底,也就是說,score值最小的成員排名為0.
- 返回值:
- 如果member是有序集key的成員,返回member的排名。
- 如果member不是有序集key的成員,返回nil。
- 命令名稱:zscore
- 語法:zscore key member
- 功能:
- 返回有序集key中成員member的score值。
- 如果member元素不是有序集key的成員,或key不存在,返回nil。
- 返回值:
- member成員的score值,以字符串形式表示。
- 命令名稱:zscan
- 語法:zscan key cursor [match pattern] [count count]
- 功能:
- 用於迭代有序集合鍵中的元素。
- 返回值:
- 有序集合成員。
- 命令名稱:zrangebylex
- 語法:zrangebylex key min max [limit offset count]
- 功能:
- 當有序集合的所有成員都具有相同的分值時,有序集合的元素會根據成員的字典序來進行排序,而這個命令則可以返回給定的有序集合鍵key中,值介於min和max之間的成員。
- 返回值:
- 數組回復:一個列表,列表里面包含了有序集合在指定范圍內的成員
- 命令名稱:zlexcount
- 語法:zlexcount key min max
- 功能:
- 對於一個所有成員的分值都相同的有序集合鍵key來說,這個命令會返回該集合中,成員介於min和max范圍內的元素數量。
- 返回值:
- 整數回復:指定范圍內的元素數量。
四、redis有序集合類型並集和交集處理
- 命令名稱:zunionstore
- 語法:zunionstore destination numkeys key [key……] [weights weight [weight……]] [aggregate sum|min|max]
- 功能:
- 計算給定的一個或多個有序集的並集,其中給定key的數量必須以numkeys參數指定,並將該並集(結果集)存到destinaton。
- 默認情況下,結果集中某個成員的score值是所有給定集下該成員score值之和。
- 返回值:
- 保存到destination的結果集的基數。
- 命令名稱:zinterstore
- 語法:zinterstore destination numkeys key [key……] [weights weight [weight……]] [aggregate sum|min|max]
- 功能:
- 計算給定的一個或多個有序集的交集,其中給定key的數量必須以numkeys參數指定,並將該並集(結果集)存到destinaton。
- 默認情況下,結果集中某個成員的score值是所有給定集下該成員score值之和。
- 返回值:
- 保存到destination的結果集的基數。
五、刪除
- 命令名稱:zrem
- 語法:zrem key member [member……]
- 功能:
- 移除有序集key中的一個或多個成員,不存在的成員將被忽略。
- 當key存在但不是有序集類型時,返回一個錯誤。
- 返回值:
- 被成功移除的成員的數量,不包括別忽略的成員。
- 命令名稱:zremrangebyrank
- 語法:zremrangebyrank key start stop
- 功能:
- 移除有序集key中,指定排名(rank)區間內的所有成員。
- 區間分別以下標參數start和stop指出,包含start和stop在內。
- 返回值:
- 被移除成員的數量。
- 命令名稱:zremrangebyscore
- 語法:zremrangebyscore key min max
- 功能:
- 移除有序集key中,所有score值介於min和max之間(包括等於min或max)的成員。
- 返回值:
- 被移除成員的數量。
- 命令名稱:zremrangebylex
- 語法:zremrangebylex key min max
- 功能:
- 對於一個所有成員的分值都相同的有序集合鍵key來說,這個命令會移除該集合中,成員介於min和max范圍內的所有元素。
- 返回值:
- 被移除成員的數量。