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
2.檢視元素c的分數python
r.zadd("z1",)
返回插入元素個數
r.zrange("z1",0,-1)
返回元素列表
r.zrevrange("z1",0,-1)
zscore z1 c
返回分值字串
3.檢視元素c的排名python
r.zscore("z1","c")
返回float
zrank z1 c
返回從小到大的排名,0為第一名
zrevrank z1 c
返回從大到小的排名,0為第一名
4.統計元素數python
r.zrank("z1","c")
返回int
r.revrank("z1","c")
統計所有元素數
zcard z1
統計分數區間的元素數,預設閉區間
zcount z1 min max
開區間zcount z1 (min (max
5.刪除元素cpython
r.zcard("z1")
返回int
r.zcount("z1",1,3) #閉區間
r.zcount("z1","(1","(3") #開區間
zrem z1 c
成功,返回1
失敗,返回0
6.給元素b增加8分,然後減5分python
r.zrem("z1","c")
成功,返回1
失敗,返回0
zincrby z1 8 b
zincrby z1 -5 b
7.按照分數區間刪除成員python
r.zincrby("z1",8,"b")
r.zincrby("z1",-5,"b")
zremrangebyscore z1 min max 閉區間
zremrangebyscore z1 (min (max 開區間
8.獲取分數區間成員python
r.zremrangebyscore("z1",5,8) #刪除分數在[5,8]之間的元素
r.zremrangebyscore("z1","(5",8) #刪除分數在(5,8]之間的元素
zrangebyscore z1 min max 閉區間
zrangebyscore z1 (min (max 開區間
9.獲取分數區間成員python
r.zrangebyscore("z1",5,8) #獲取分數在[5,8]之間的元素
r.zrangebyscore("z1","(5",8) #獲取分數在(5,8]之間的元素
zrangebyscore z1 min max 閉區間
zrangebyscore z1 (min (max 開區間
zrangebyscore z1 min max withscores limit 2 2 分頁
10.並集儲存python
r.zrangebyscore("z1",5,8) #獲取分數在[5,8]之間的元素,返回列表
r.zrangebyscore("z1","(5",8) #獲取分數在(5,8]之間的元素,返回列表
#兩個集合取並集,存在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]
10.交集儲存python
r.zunionstore("destination",("z1","z2"),aggregate="sum")
r.zunionstore("destination",,aggregate="min") #帶權重的集合
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 有這...