Redis資料型別之有序集合

2021-10-17 23:13:44 字數 3137 閱讀 3879

k ey

−−

>

key-->\

key−

−>

有序集合是有序的,去重的容器資料結構

值只能為字串,最多232−

12^-1

232−

1這裡每個元素對應乙個分數,並按照分數從小到大排序

1.新增元素,檢視元素

#新增元素時,在前面加乙個分數

zadd z1 1 a 3 b 2 c

#檢視所有元素,正向分值從小到大

zrange z1 0 -1

#反向,分值從大到小

zrevrange z1 0 -1

python

r.zadd("z1",)

返回插入元素個數

r.zrange("z1",0,-1)

返回元素列表

r.zrevrange("z1",0,-1)

2.檢視元素c的分數

zscore z1 c

返回分值字串

python

r.zscore("z1","c")

返回float

3.檢視元素c的排名

zrank z1 c

返回從小到大的排名,0為第一名

zrevrank z1 c

返回從大到小的排名,0為第一名

python

r.zrank("z1","c")

返回int

r.revrank("z1","c")

4.統計元素數

統計所有元素數

zcard z1

統計分數區間的元素數,預設閉區間

zcount z1 min max

開區間zcount z1 (min (max

python

r.zcard("z1")

返回int

r.zcount("z1",1,3) #閉區間

r.zcount("z1","(1","(3") #開區間

5.刪除元素c

zrem z1 c

成功,返回1

失敗,返回0

python

r.zrem("z1","c")

成功,返回1

失敗,返回0

6.給元素b增加8分,然後減5分

zincrby z1 8 b

zincrby z1 -5 b

python

r.zincrby("z1",8,"b")

r.zincrby("z1",-5,"b")

7.按照分數區間刪除成員

zremrangebyscore z1 min max  閉區間

zremrangebyscore z1 (min (max 開區間

python

r.zremrangebyscore("z1",5,8) #刪除分數在[5,8]之間的元素

r.zremrangebyscore("z1","(5",8) #刪除分數在(5,8]之間的元素

8.獲取分數區間成員

zrangebyscore z1 min max  閉區間

zrangebyscore z1 (min (max 開區間

python

r.zrangebyscore("z1",5,8) #獲取分數在[5,8]之間的元素

r.zrangebyscore("z1","(5",8) #獲取分數在(5,8]之間的元素

9.獲取分數區間成員

zrangebyscore z1 min max  閉區間

zrangebyscore z1 (min (max 開區間

zrangebyscore z1 min max withscores limit 2 2 分頁

python

r.zrangebyscore("z1",5,8) #獲取分數在[5,8]之間的元素,返回列表

r.zrangebyscore("z1","(5",8) #獲取分數在(5,8]之間的元素,返回列表

10.並集儲存

#兩個集合取並集,存在destination集合

zunionstore destination 2 z1 z2

#三個集合取並集,存在destination集合

zunionstore destination 3 z1 z2 z3

如:zadd z1 1 a 2 b 3 c

zadd z2 5 a 6 c 7 d

zunionstore z5 2 z1 z2

得到分數[2,6,7,9]

這裡預設相同的元素,分數則求和

zunionstore z5 2 z1 z2 aggregate min

得到分數[1,2,3,7]

同樣有取max

帶權重的分數

zunionstore z5 2 z1 z2 weights 0.5 1

得到分數[1,5.5,7,7.5]

python

r.zunionstore("destination",("z1","z2"),aggregate="sum")

r.zunionstore("destination",,aggregate="min") #帶權重的集合

10.交集儲存

zinterstore destination 2 z1 z2

zinterstore destination 3 z1 z2 z3

python

r.zinterstore("dest",("z1","z2"),aggregate="sum")

r.interstore("dest",,aggregate="min")

實時排行榜

Redis學習之有序集合型別

有序結合與集合型別就是它是有序的,有序集合在集合的基礎上為每乙個元素關聯乙個分數,這就讓有序集合不支援插入 刪除。有序集合中的每個元素是不同的,但分數卻可以向他。有序集合使用雜湊表和跳躍表實現,即使讀取位於中間部分的資料也很快。有序集合比列表更費記憶體。基本命令如下 一 增127.0.0.1 637...

redis資料結構之有序集合

有序集合與集合大致差不多,不同的是有序集合中的元素可以排序,但與列表使用下標實現排序不一樣,有序集合利用分數作為依據排序。有序集合不能重複,但分數可以重複。對部落格 發布的文章做排行榜,榜單的維度可能是按時間 按照獲得讚數。比如使用讚數對使用者每天發布文章的排行榜,並實現以下功能 1 新增使用者讚數...

redis命令之有序集合(zset)

一 常用命令 1 zadd zset nx xx ch incr score member score member nn 表示只新增,不更新 xx 表示只更新,不新增 ch 表示修改返回值,改操作返回新增元素和修改元素的個數。如果命令中有ch,則分數相等的值不會被記錄到返回的個數中 incr 有這...