Redis資料型別之ZSet型別

2021-10-07 18:29:34 字數 1711 閱讀 9447

有序集合(sorted set)

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

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

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

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

賦值:

向有序集合新增乙個或多個成員,或者更新已存在成員的分數

zadd key score1 member1 [score2 member2]
取值:

1、獲取有序集合的成員數

zcard key
2、計算在有序集合中指定區間分數的成員數

zcount key min max
3、返回有序集合中指定成員的索引

zrank key member
4、通過索引區間返回有序集合成指定區間內的成員(低到高)

zrange key start stop [withscores]
5、通過分數返回有序集合指定區間內的成員

zrangebyscore key min max [withscores]

[limit]

6、返回有序集中指定區間內的成員,通過索引,分數從高到底

zrevrange key start stop [withscores]
7、返回有序集合中指定分數區間內的成員,分數從高到低排序

zrevrangebyscore key max min [withscores]
刪除:

1、移除集合

del key
2、移除有序集合中的乙個或多個成員

zrem key member [member ...]
3、移除有序集合中給定的排名區間的所有成員(第一名是0)(低到高排序)

zremrangebyrank key start stop
4、移除有序集合中給定的分數區間的所有成員

zremrangebyscore key min max
5、增加member元素的分數increment,返回值是更改後的分數

zincby key increment member
常用於排行榜,銷量排名、積分排名等

1、比如twitter 的public timeline可以以發表時間作為score來儲存,這樣獲取時就是自動按時間排好序的。

2、 比如乙個儲存全班同學成績的sorted set,其集合value可以是同學的學號,而score就可以是其考試得分,這樣在資料插入集合的時候,就已經進行了天然的排序。

3、 還可以用sorted set來做帶權重的佇列,比如普通資訊的score為1,重要訊息的score為2,然後工作執行緒可以選擇按score的倒序來獲取工作任務。讓重要的任務優先執行。

redis資料型別之ZSet

1 設定和獲取127.0 0.1 6379 zadd zset1 10 a zadd key score key integer 1127.0 0.1 6379 zadd zset1 50 b integer 1127.0 0.1 6379 zadd zset1 30 c integer 1127....

Redis資料型別 ZSET

1 zset為有序集合,其餘set非常類似,但是不同的是有序集合的每個成員都會關聯乙個評分,zest則通過這個評分的大小為集合中的成員進行排序 由低到高 集合的元素是唯一 的,但是評分卻可以重複。2 有序集合 支援新增 刪除 更新元素。由於有序性,可以很快根據評分獲取乙個範圍的元素。在有序集合中,你...

Redis 資料型別 Zset

redis 常用命令,思維導圖 zset是redis提供的乙個非常特別的資料結構,常用作排行榜等功能,以使用者id為value,關注時間或者分數作為score進行排序。與其他資料結構相似,zset也有兩種不同的實現,分別是ziplist和skiplist zset 儲存示意圖 每個 value 後面...