redis 有序集合(sorted set)
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是o(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
list鍊錶型別: 內部儲存的元素有排序功能、會存在多個相同的元素。
set集合型別: 元素沒有排序功能、不存在多個相同元素
該sort set是兩種型別
(list
和set)
的集中體現
,稱為排序集合型別。
sort set型別:元素有排序功能、不存在多個相同元素
和set
一樣sorted set
也是string型別
元素的集合,
不同的是每個元素都會關聯乙個權。
通過權/值可以有序的獲取集合中的元素
權:乙個集合中多個元素做排序的標準。
值:元素的具體資訊。
該sort set
型別適合場合:
獲得最熱門
(回覆量
)前5個帖子資訊:
select * from messageorder by backnumdesc limit 5;
(以上需求可以通過簡單
sql語句實現,但是
sql語句比較耗費
mysql
資料庫資源
[或者是全部記錄受到影響被查詢 或者 是建立索引消耗額外資源
])案例:利用
sort set
實現獲取最熱門的前5帖子資訊
排序集合中的每個元素都是值、權的組合
(之前的
set集合型別每個元素就只是乙個 值)
我們只做乙個sort set排序集合,裡邊只保留
5個元素資訊,該
5個元素是回覆量最高的,
每個帖子被回覆的時候,都有機會進入該集合裡邊,但是只有回覆量最高的前
5個帖子會存在於在集合,回覆量低的就被刪除。
序號 命令及描述
1 zadd key score1 member1 [score2 member2]
向有序集合新增乙個或多個成員,或者更新已存在成員的分數
2 zcard key
獲取有序集合的成員數
3 zcount key min max
計算在有序集合中指定區間分數的成員數
4 zincrby key increment member
有序集合中對指定成員的分數加上增量 increment
5 zinterstore destination numkeys key [key ...]
計算給定的乙個或多個有序集的交集並將結果集儲存在新的有序集合 key 中
6 zlexcount key min max
在有序集合中計算指定字典區間內成員數量
7 zrange key start stop [withscores]
通過索引區間返回有序集合成指定區間內的成員
8 zrangebylex key min max [limit offset count]
通過字典區間返回有序集合的成員
9 zrangebyscore key min max [withscores] [limit]
通過分數返回有序集合指定區間內的成員
10 zrank key member
返回有序集合中指定成員的索引
11 zrem key member [member ...]
移除有序集合中的乙個或多個成員
12 zremrangebylex key min max
移除有序集合中給定的字典區間的所有成員
13 zremrangebyrank key start stop
移除有序集合中給定的排名區間的所有成員
14 zremrangebyscore key min max
移除有序集合中給定的分數區間的所有成員
15 zrevrange key start stop [withscores]
返回有序集中指定區間內的成員,通過索引,分數從高到底
16 zrevrangebyscore key max min [withscores]
返回有序集中指定分數區間內的成員,分數從高到低排序
17 zrevrank key member
返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序
18 zscore key member
返回有序集中,成員的分數值
19 zunionstore destination numkeys key [key ...]
計算給定的乙個或多個有序集的並集,並儲存在新的 key 中
20 zscan key cursor [match pattern] [count count]
迭代有序集合中的元素(包括元素成員和元素分值)
例項
Redis資料結構之有序集合sortedset
有序集合 sorted set 用於儲存多個字串元素,它是在集合 set 的基礎上給每個元素增加了乙個用於排序的字段 score 元素同樣不可重複,可以根據分數索引獲取元素,此外,提供了根據score獲取指定範圍以及排序功能 zadd 新增資料,返回元素個數 zadd key score1 memb...
Redis 有序集合
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...
Redis有序集合
redis 有序集合和集合一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。有序集合的成員是唯一的,但分數 score 卻可以重複。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度...