Redis學習筆記 - 數據類型與API(5)Sorted Set

Sorted Set (有序集合)

特色

  • 有序
  • 無重複
  • 集合間操做

集合 VS 有序集合

集合 有序集合
無重複元素 無重複元素
無序 有序
element element + score

列表 VS 有序集合

列表 有序集合
能夠有重複元素 無重複元素
有序 有序
element element + score

經常使用命令

操做類型 命令
基本操做 zadd、zrem、zcard、zincrby、zscore
範圍操做 zrange、zrangebyscore、zcount、zremrangebyrank
集合操做 zunionstore、zinterstore
命令 含義 時間複雜度
zadd 將一個或多個 member 元素及其 score 值加入到有序集 key 當中 O( M * log(N) ), N 是有序集的基數, M 爲成功添加的新成員的數量
zrem 移除有序集 key 中的一個或多個成員,不存在的成員將被忽略 O(M*log(N)), N 爲有序集的基數, M 爲被成功移除的成員的數量。
zscore 元素的分數 O(1)
zincrby 增長或減小元素的分數 O(log(N))
zcard 元素的總個數 O(1)
zrange 返回指定索引範圍內的升序元素【和分值】 O(log(N) + M),N 爲有序集的基數,而 M 爲結果集的基數
zrangebyscore 返回指定分數範圍內的升序元素【和分值】 O(log(N) + M),N 爲有序集的基數,而 M 爲結果集的基數
zcount 返回有序結合內,在指定分數範圍內的元素個數 O(log(N) + M),N 爲有序集的基數, M 爲值在 min 和 max 之間的元素的數量
zremrangebyrank 刪除指定排名內的升序元素 O(log(N) + M),N 爲有序集的基數,而 M 爲被移除成員的數量
zremrangebyscore 刪除指定分數內的升序元素 O(log(N) + M),N 爲有序集的基數, M 爲結果集的基數

zadd

  • zadd key score element(能夠是多對)(向有序集合key添加score和element)

zrem

  • zrem key element(能夠是多個) (刪除指定元素)

zscore

  • zscore key element (返回元素的分數)

zincrby

  • zincrby key increScore element (增長或減小元素的分數)

zcard

  • zcard key (返回元素的總個數)

zrange

  • zrange key start end [withscores] (返回指定索引範圍內的升序元素【和分值】)

zrangebyscore

  • zrangebyscore key minScore maxScore [withscores] (返回指定分數範圍內的升序元素【和分值】)

zcount

  • zcount key minScore maxScore (返回有序結合內,在指定分數範圍內的元素個數)

zremrangebyrank

  • zremrangebyrank key start end (刪除指定排名內的升序元素)

zremrangebyscore

  • zremrangebyscore key minScore maxScore (刪除指定分數內的升序元素)
127.0.0.1:6379> zadd report 100 xiaoming 98 xiaohong 85 laowang 60 zhangsan 55 lisi
(integer) 5
127.0.0.1:6379> zscore report laowang
"85"
127.0.0.1:6379> zcard report
(integer) 5
127.0.0.1:6379> zrank report xiaohong
(integer) 3
127.0.0.1:6379> zrank report xiaoming
(integer) 4
127.0.0.1:6379> zrem report lisi
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "laowang"
4) "85"
5) "xiaohong"
6) "98"
7) "xiaoming"
8) "100"
127.0.0.1:6379> zrangebyscore report 85 100 withscores
1) "laowang"
2) "85"
3) "xiaohong"
4) "98"
5) "xiaoming"
6) "100"
127.0.0.1:6379> zcount report 85 100
(integer) 3
127.0.0.1:6379> zremrangebyrank report 1 1
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "xiaohong"
4) "98"
5) "xiaoming"
6) "100"
127.0.0.1:6379> zremrangebyscore report 85 98
(integer) 1
127.0.0.1:6379> zrange report 0 -1 withscores
1) "zhangsan"
2) "60"
3) "xiaoming"
4) "100"

其餘命令

  • zrevrank
  • zrevrange
  • zrevrangebyscore
  • zinterstore
  • zunionstore

更多 Sorted Set 相關命令:http://www.redis.cn/commands....

實戰

  • 排行榜:新書榜、暢銷榜、關注榜等。

相關內容:

Redis學習筆記 - 數據類型與API(1)Key
Redis學習筆記 - 數據類型與API(2)String
Redis學習筆記 - 數據類型與API(3)List
Redis學習筆記 - 數據類型與API(4)Set
Redis學習筆記 - 數據類型與API(5)Sorted Set
Redis學習筆記 - 數據類型與API(6)Hashhtml

相關文章
相關標籤/搜索