標籤:redis 資料類型 zset
上一篇講述了無序set集合的使用命令,本文將講述zset(有序集合)的使用命令以及執行個體。zset的一個元素由權重和值構成,權重表示的是位置,也就是有序的來由。
1、如果添加一個有序集合元素
文法:zadd [zset集合] [權重(數實值型別)] [元素值]# 預設是權重由小到大排列
範例:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/DE/wKioL1QL1QPy3yVZAAGXIfsMlwc523.jpg" title="zadd樣本" alt="wKioL1QL1QPy3yVZAAGXIfsMlwc523.jpg" />
闡述:在無序集合中,sadd一個已經存在的元素,是不存添加成功的;雖然在zset中添加一個已經存在的元素也無法添加,但是會可以修改其新設定的元素權重。
例如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/DD/wKiom1QL127haxyXAAD3c_MzIXk277.jpg" title="zadd-01.png" alt="wKiom1QL127haxyXAAD3c_MzIXk277.jpg" />
2、如果刪除一個元素
文法:zrem [zset集合]
範例:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/DD/wKiom1QL1q2goWWeAAAwEFt25cY401.jpg" title="zrem樣本" alt="wKiom1QL1q2goWWeAAAwEFt25cY401.jpg" />
3、遍曆有序集合
# 權重從小到大排列遍曆文法1:zrange [zset集合] [開始索引] [結束索引] <withscores># 權重從大到小排列遍曆文法2:zrevrange [zset集合] [開始索引] [結束索引] <withscores>
範例:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/48/DF/wKioL1QL2IPgjiWYAAD_gDcrVyA783.jpg" title="zrange.png" alt="wKioL1QL2IPgjiWYAAD_gDcrVyA783.jpg" />
闡述:文法包含withscores是表示顯示權重。
4、自增/自減元素權重
文法:zincrby [zset集合] [步長] [元素] # 返回元素的權重描述:如果元素不存在,那麼添加元素,並設定權重為指定步長,否則修改元素的權重為自增或自減的結果。
範例:修改51cto2元素的權重為7
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/48/DF/wKioL1QL2d6z4bxNAADLpSUFrLI503.jpg" title="zincrby.png" alt="wKioL1QL2d6z4bxNAADLpSUFrLI503.jpg" />
5、擷取元素的索引位置
# 按照權重升序取索引(從小到大)文法1:zrank [zset集合] [元素] # 擷取指定元素的索引位置# 按照權重降序取索引(從大到小)文法2:zrevrank [zset集合] [元素]
範例:分別按照降序和升序去出51cto2元素的索引值(索引是從0開始的)
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/DD/wKiom1QL2vPSEUTgAAE3yXYpo9A483.jpg" title="zrank.png" alt="wKiom1QL2vPSEUTgAAE3yXYpo9A483.jpg" />
6、擷取某個權重區間的元素列表
文法:zrangebyscore [zset集合] [起始權重] [結束權重] <withscores>描述:擷取某個權重區間的元素,withscores選項與zrange一致
範例:擷取權重3,4之間的元素
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/DD/wKiom1QL3DGSrJhYAAFbkWNIe1o790.jpg" title="zrangebyscore.png" alt="wKiom1QL3DGSrJhYAAFbkWNIe1o790.jpg" />
7、擷取某個權重區間的元素個數
文法:zcount [zset集合] [起始權重] [結束權重] # 返回元素個數
範例:擷取權重3到4之間的元素個數
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/48/DD/wKiom1QL3TWAv8ZQAADiKltuSaA038.jpg" title="zcount.png" alt="wKiom1QL3TWAv8ZQAADiKltuSaA038.jpg" />
8、擷取指定元素的權重
文法:zscore [zset集合] [元素] # 返回元素的權重數值
範例:擷取51cto2的權重
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/E1/wKioL1QL7Y2xbyfLAAAwf50SdQ8462.jpg" title="zscore.png" alt="wKioL1QL7Y2xbyfLAAAwf50SdQ8462.jpg" />
9、擷取集合大小
文法:zcard [zset集合] # 返回集合元素大小
範例:擷取set1集合的元素個數
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/48/DF/wKiom1QL7ZPgJtNFAABENov7rmg105.jpg" title="zcardpng.png" alt="wKiom1QL7ZPgJtNFAABENov7rmg105.jpg" />
10、大量刪除
# 按照索引位置大量刪除文法1:zremrangebyrank [zset集合] [開始索引] [結束索引] # 按照權重區間大量刪除文法2: zremrangebyscore [zset集合] [開始索引] [結束索引]
範例:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/48/E2/wKioL1QL8FCA3gU_AAJBi1gc5mk246.jpg" title="zremrange.png" alt="wKioL1QL8FCA3gU_AAJBi1gc5mk246.jpg" />
本文出自 “java程式冥” 部落格,請務必保留此出處http://793404905.blog.51cto.com/6179428/1549770
[redis資料結構] 之 zset(有序集合)