1. 程式人生 > >Redis 基本命令:SortedSet操作

Redis 基本命令:SortedSet操作

Redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。

不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。

有序集合的成員是唯一的,但分數(score)卻可以重複。

集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)

SortedSet的資料結構類似於Set,不同的是Sorted中的每個成員都分配了一個值(Score)用於對其中的成員進行排序(升序)

1.zadd key score member[[score member] ..]

將一個或多個member及其socre加入到set中,socre須是float型別;例:zadd zsk 1 m1 2 m2 3 m3 0 m4在集合中是[m4 0][m3 3][m2 2][m1 1]這樣的順序

2.zcard key

返回有序集合中元素的個數,若key不存在返回0;例:zcard zsk。

3.zcount key min max

返回score值在min和max之間的元素個數(score和min之間是>=和max是<=),若min>max返回0,若min或max不為double型別返回error;例:zcount zsk 1 4。

4.zincrby key increment member

為集合成員member的score增加增量increment並返回新的score值,increment可以為負數但必須是double型別否則會返回error,若key不存在則會先新增member成員後再執行操作;例:zincrby zsk -1.1 m1。

5.zrange key start stop[withscores]

按索引返回key的成員區間,start和stop是有序集合的索引下標(從0開始),若stop

6.zrangebyscore key min max [withscores][limit offset count]

返回有序集合中score介於min和max之間的元素(若不想包含=請用如 zrangebyscore zsk (1 (4表示),litmit的功能類似於分頁,例:zrangebyscore zsk 0 1 withscores limit 0 2返回:

7.zrank key member

返回有序集合中member的排名,排名以0為底;例:zrank zsk m4。

8.zrem key member[member…]

移除有序集合中的一個或多個元素,若member不存在則忽略;例:zrem zsk m5 m1。

9.zremrangebyrank key start stop

刪除指定區間中的元素,start和stop的計數從0開始,start的位置須小於stop,start和stop也可為負數表示從後記位如-1表示倒數第一個元素;例:zremrangebyrank zsk 0 -3。

10.zremrangebyscore key min max

刪除score值在min和max之間的元素(若不想包含=請用如 zremrangebyscore zsk (1 (4表示);例:zremrangebyscore zsk 1 2。

11.zrevrange key start stop[withscores]

和zrange類似,不過zrevrange的元素時倒序排列的:zrevrange zsk 0 5 withscores。

12.zrevrangebyscore key max min [withscores] [limit offset count]

和zrangebyscore類似,只不過返回結果是按倒序排列(這裡需要注意一下max和min的書序),例:zrevrangebyscore zsk 6 2 withscores limit 1 2。

13.zrevrank key member

和zrank類似,不過資料返回的順序為倒序,順序以0位底,也就是說最大的排名為0,例:zrevrank zsk m6。

14.zscore key member

 返回成員member的score值,若key不存在返回nil;例:zscore zsk m3。
 

15.zunionstore destination numkeys key [key …] [weights [weight …]] [aggregate sum|min|max]

這個是返回一個或多個集合的並集並將結果儲存到destination中去,若destination已存在此元素則score的值會被覆蓋:
  numkeys用於指定key的數量,若key的數目和numkeys不一致會返回錯誤,score為元素的score之和,也就是說若sk1和sk2中都有m4,一個score為1另外一個為2,那麼合併的新集合中score為3;
  weights為每個有序集合的乘法因子,也就是說sk1中和sk2中都有m4,score分別為1和2,乘法因子設定為1和2,那麼最終的score為1*1+2*2,weights預設為1一旦顯示指定weights那麼weight的數目必須與key的數目相同否則會返回error;
  aggregate可以指定結果集的聚合方式,預設使用sum將某個成員之和作為score值,使用min使用最小的,使用max使用最大的,如sk1和sk2中m4的score分別為1和2,那麼使用sum最終的socre就為3,使用max最終的socre就為2,使用min最總的score就為1,aggregate的會先計算weight再做比較。
  例:zunionstore zsk2 2 zsk zsk1 weights 1 4 aggregate max。

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

取交集並存入destination,不想再細說了看zunionstore吧,例:zinterstore zsk2 2 zsk zsk1 weights 1 4 aggregate max

17.zscan key cursor[match pattern][count count]

增量迭代有序集合,參見scan,例:zscan sk 0 match *5 count 1。