一、zset概述
zset是Redis中一種有序集合,它是通過鍵值對存儲數據,同時還給每個元素設置了一個分數,根據分數的大小,可以對元素排序。zset中的元素必須是唯一的,但分數可以重複。zset有很多實用的命令,可以支持一些高級的數據結構操作。
二、zset常用命令
1. ZADD
ZADD key score1 member1 [score2 member2] //添加一個或多個元素到有序集合中,如果元素已存在,則更新分數 ZADD myzset 2.0 "two" ZADD myzset 1.0 "one" ZADD myzset 3.0 "three"
上面的代碼將三個元素添加進myzset有序集合中,分數分別為1.0,2.0和3.0,對應的值為”one”,”two”和”three”。
2. ZRANK
ZRANK key member //返回有序集合中指定成員的排名(從小到大),排名從0開始計算 ZRANK myzset "two" //返回2
上面的代碼將返回myzset中”two”元素的排名,即2。
3. ZRANGE
ZRANGE key start stop [WITHSCORES] //返回有序集合指定排名區間內的成員,start和stop都是從0開始的排名,WITHSCORES參數指定返回成員及其分數 ZRANGE myzset 0 1 //返回"one"和"two" ZRANGE myzset 0 1 WITHSCORES //返回"one"的分數1.0和"two"的分數2.0
上面的代碼將返回myzset中排名0和1的元素。
4. ZINCRBY
ZINCRBY key increment member //增加有序集合中指定成員的分數 ZINCRBY myzset 2.0 "two" //將"two"的分數增加2.0
上面的代碼將增加myzset中”two”元素的分數2.0。
5. ZREVRANGE
ZREVRANGE key start stop [WITHSCORES] //返回有序集合指定排名區間內的成員,按分數從大到小排序,start和stop都是從0開始的排名 ZREVRANGE myzset 0 1 //返回"three"和"two" ZREVRANGE myzset 0 1 WITHSCORES //返回"three"的分數3.0和"two"的分數2.0
上面的代碼將返回myzset中按分數從大到小排序排名0和1的元素。
三、zset高級命令
1. ZRANGEBYSCORE
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] //返回有序集合中分數區間內的成員,min和max為區間範圍,LIMIT參數指定偏移量和返回數量 ZRANGEBYSCORE myzset 1.0 2.0 //返回分數在1.0到2.0之間的元素 ZRANGEBYSCORE myzset 1.0 2.0 WITHSCORES //返回分數在1.0到2.0之間的元素及其分數 ZRANGEBYSCORE myzset 1.0 2.0 LIMIT 0 1 //返回分數在1.0到2.0之間的第一個元素及其分數
上面的代碼將返回myzset中分數在1.0到2.0之間的元素。
2. ZREVRANGEBYSCORE
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] //返回有序集合中分數區間內的成員,按分數從大到小排序,max和min為區間範圍,LIMIT參數指定偏移量和返回數量 ZREVRANGEBYSCORE myzset 3.0 2.0 //返回分數在2.0到3.0之間的元素,按分數從大到小排序 ZREVRANGEBYSCORE myzset 3.0 2.0 WITHSCORES //返回分數在2.0到3.0之間的元素及其分數,按分數從大到小排序 ZREVRANGEBYSCORE myzset 3.0 2.0 LIMIT 0 1 //返回分數在2.0到3.0之間的第一個元素及其分數,按分數從大到小排序
上面的代碼將返回myzset中分數在2.0到3.0之間的元素,按分數從大到小排序。
3. ZREM
ZREM key member1 [member2] //從有序集合中刪除一個或多個元素 ZREM myzset "two" //從myzset中刪除"two"元素
上面的代碼將從myzset中刪除”two”元素。
4. ZINTERSTORE
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] //計算多個有序集合的交集,並將結果存儲在一個新的有序集合中,可以指定key的數量、權重和聚合方式 ZADD zset1 1.0 "one" ZADD zset1 2.0 "two" ZADD zset2 2.0 "two" ZADD zset2 3.0 "three" ZINTERSTORE zset3 2 zset1 zset2 //計算zset1和zset2的交集,結果存儲在zset3中
上面的代碼將計算zset1和zset2的交集,並將結果存儲在zset3中。
5. ZUNIONSTORE
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX] //計算多個有序集合的並集,並將結果存儲在一個新的有序集合中,可以指定key的數量、權重和聚合方式 ZADD zset1 1.0 "one" ZADD zset1 2.0 "two" ZADD zset2 2.0 "two" ZADD zset2 3.0 "three" ZUNIONSTORE zset3 2 zset1 zset2 //計算zset1和zset2的並集,結果存儲在zset3中
上面的代碼將計算zset1和zset2的並集,並將結果存儲在zset3中。
四、總結
zset是Redis中一種非常實用的有序集合,可以支持對元素按分數排序、高級的數據結構操作等。本篇文章介紹了zset的基本概念和常用命令,以及一些高級命令的用法和示例。掌握zset的使用可以提高Redis的應用能力,建議開發者深入學習。
原創文章,作者:INJHW,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372550.html