框架——緩存框架——redis——數據類型——zset

1、概念

  引用原著:

A Redis sorted set is a collection of unique strings (members) ordered by an associated score.

與hash的結構基本相同,區別在於value值只能是數字,且會根據value值升序排序。

2、操作

2.1  基礎

按照新增,查詢,修改,刪除的順序。

2.1.1    zadd

格式:

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]

  元素操作,往zset中一次性添加多個元素。

第一部分,NX,XX,NX只添加元素,當元素存在時,無意義。XX只更新元素,元素不存在時,無意義。

第二部分,GT,LT。當前元素存在,且命令行參數的score大於或者小於原始值時,更新,否則無意義。

第三部分,CH,

第四部分,INCR,當添加此選項時,等價於ZINCRBY命令。鍵值對只能出現一個,含義是在原始值上添加參數指定的score值。

特殊說明:

Key不存在時,會創建一個空的zset

Key存在,value類型不爲zset時,拋錯。

當score不合規時,拋錯。+inf表示正無窮,-inf表示負無窮,都是可以的。

示例:略

2.1.2    zscore & zmscore

格式:

ZSCORE key member

  元素操作,在zset中查詢member的score。

特殊說明:

當key或者member不存在時,返回nil。

示例:略

zmscore,m全稱爲multiple,一次性查詢多個member,返回值與member參數順序一致。

2.1.3    zrange

格式:

ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES]

  元素操作,在zset中進行範圍查詢。

第一部分,start, stop表示起始位置,截止位置,當start大於stop時,無返回。Stop爲負值時,從末尾開始。stop大於元素個數時,設置爲最大值。

第二部分,byscore, bylex, 根據score排序,根據lex排序。默認根據index排序,所以start, stop爲索引值。當byscore時,start, stop爲score值。當爲lex,start stop爲member的名稱。

第三部分,rev,排序方式,加上rev爲降序。

第四部分, limit offset count,限制返回條數。

第五部分,withscores,返回值攜帶score值。

  示例:

ZRANGE zset 10 5 REV BYSCORE

  當添加rev選項,等價於zrevrange。

當添加byscore選項,等價於zrangebyscore。

當同時添加rev, byscore選項,等價於zrevrangebyscore

當添加bylex, 等價於zrangebylex。

當添加rev選項,等價於zrevrangebylex。

2.1.4    zrank & zrevrank

  格式:

ZRANK key member

  元素操作,在zset中查詢member的索引值,或者稱爲排名。

特殊說明:

當key或者member不存在時,返回nil

示例:略

rev表示降序。

2.1.5    zrandmember

格式:

ZRANDMEMBER key [count [WITHSCORES]]

  元素操作,在zset中隨機返回count個member,添加withscores選項,同時返回score值。

特殊說明:

當key不存在時,返回nil

示例:略

2.1.6    zincrby

格式:

ZINCRBY key increment member

  元素操作,在zset中將member對應的score增加increment。

特殊說明:

當key不存在時, 會創建新的zset,包含member元素,它的值爲0.

當member不存在時,會將它的值設置爲0.

示例:略

2.1.7    zrem

格式:

ZREM key member [member ...]

  元素操作,在zset中一次性刪除多個member。

特殊說明:

當key或者member不存在時,報錯。

示例:略

2.1.8    zremrangebyXX

格式:

zremrangebyxx key start stop

  元素操作,範圍型刪除。有三種,zremrangebyrank, zremrangebyscore, zremrangebylex,三種排序方式不同。Rank爲索引排序,score爲分數排序,lex按照member名稱字母排序。

當爲byrank時, start stop表示索引值

當爲score時,start stop爲score值。

當爲lex時,start stop爲member值,表示按字母排序。

特殊說明:

當key或者member不存在時,報錯。

示例:略

2.1.9    zpopmin & zpopmax & zmpop

格式:

ZPOPMIN key [count]

  元素操作,在zset中由小到大依次刪除count個元素。

特殊說明:

當count不存在時,默認值爲1。

示例:略

Zpopmax由大到小,先刪除最大元素。

Zmpop,在參數中可以指定多個key,一次性刪除多個zset的count個元素。Min,max爲命令的選項。

命令名稱前綴爲b的,表示pop操作可以處於等待(block)狀態,當刪除不成功時,會處於阻塞狀態,可以指定timeout參數,含義爲等待的毫秒數。

Bzpopmin,bzpopmax, bzmpop。

2.1.10     zcard

格式:

ZCARD key

  元素操作,統計zset中有多少個member。

特殊說明:

當key不存在時,返回0。

示例:略

2.1.11     zcount

格式:

zcount key min max

  元素操作,統計zset中score大於min,小於max的元素個數。

示例:略

2.2   集合

2.2.1    zunion & zunionstore

格式:

ZUNION numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]

  集合操作,計算集合之間的並集。

第一部分, zunion爲命令名稱, numkeys,爲key的個數,與後續的key參數個數保持一致。最少爲2。

第二部分,weights weight,在進行聚合函數之前,先對score進行乘法運算,score * weight,不指定時, 爲默認值1。

第三部分,aggregate sum min max,當並集有相同元素時,例如其中一個存在a,它的score爲2,另外一個也存在a,它的score值爲3時,sum爲二者相加,min返回二者的最小值,max返回二者的最大值。

第四部分,withscores,略。

  示例:

ZUNION 2 zset1 zset2

  帶store的區別是會將結果保存到destination中。

2.2.2    zdiff & zdiffstore

格式:

ZDIFF numkeys key [key ...] [WITHSCORES]

  集合操作,計算集合之間的差集。所有的選項與zunion相同。

  示例:

ZDIFF 2 zset1 zset2 WITHSCORES

2.2.3    zinter & zintercard & zinterstore

格式:

ZINTER numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>] [WITHSCORES]

  集合操作,計算集合之間的交集。所有的選項與zunion相同。

示例:略。

zintercard返回交集的個數,而不是返回元素和score。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章