有序集合(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 後面...