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
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
實戰
相關內容:
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