Redis?中ZSET數(shù)據(jù)類型命令使用及對應場景總結(案例詳解)
1.zadd添加元素
zadd key score member
示例:
127.0.0.1:6379> zadd user:visit:rank 60 1001 (integer) 1 127.0.0.1:6379>
2.zrem 從有序集合key中刪除元素
zrem key member
示例:
127.0.0.1:6379> zrem user:visit:rank 1001 (integer) 1 127.0.0.1:6379>
3.zscore 返回有序集合key中元素member的分值
zscore key member
示例
127.0.0.1:6379> zscore user:visit:rank 1001 (nil) 127.0.0.1:6379> zscore user:visit:rank 1002 "60" 127.0.0.1:6379>
4.zincrby 為有序集合key中元素增加分值
zincrby key increment member
為有序集合key中元素member的分值加上increment
示例
127.0.0.1:6379> zscore user:visit:rank 1002 "60" 127.0.0.1:6379> zincrby user:visit:rank 20 1002 "80" 127.0.0.1:6379>
為 1002 用戶增加20分,增加20分之后返回新的分數(shù)
應用場景:更新排名的依據(jù),如:閱讀量排行榜,每閱讀一次,增加一次閱讀量
5.zcard獲取有序集合key中元素總個數(shù)
zcard key
示例
127.0.0.1:6379> zcard user:visit:rank (integer) 1 127.0.0.1:6379>
應用場景:獲取排行集合的元素總個數(shù)
6.zrange 正序獲取分值范圍內(nèi)的元素
zrange key start stop [withscores]
正序獲取有序集合key從start下標到stop下標的元素;使用withscores 參數(shù)時,返回的集合元素帶有分數(shù),不適用withscores的參數(shù)時,直接返回排名
注意:參數(shù)start和stop都是基于零的索引,即0是第一個元素,1是第二個元素,以此類推。
它們也可以是負數(shù),表示從有序集合的末尾的偏移量,其中-1是有序集合的最后一個元素,-2是倒數(shù)第二個元素,等等。
示例:
127.0.0.1:6379> zrange user:visit:rank 1 10 withscores 1) "1003" 2) "66" 3) "1002" 4) "80" 5) "1005" 6) "96" 127.0.0.1:6379> zrange user:visit:rank 0 10 1) "1004" 2) "1003" 3) "1002" 4) "1005" 127.0.0.1:6379>
應用場景:根據(jù)打分的升序排序獲取元素集合
7.zrevrange 倒序獲取集合元素
zrevrange key start stop [withscores]
倒序獲取有序集合key從start下標到stop下標的元素
注意:參數(shù)start和stop都是基于零的索引,即0是第一個元素,1是第二個元素,以此類推。
它們也可以是負數(shù),表示從有序集合的末尾的偏移量,其中-1是有序集合的最后一個元素,-2是倒數(shù)第二個元素,等等。
示例:
127.0.0.1:6379> zrevrange user:visit:rank 1 10 1) "1002" 2) "1003" 3) "1004" 127.0.0.1:6379> zrevrange user:visit:rank 1 10 withscores 1) "1002" 2) "80" 3) "1003" 4) "66" 5) "1004" 6) "16" 127.0.0.1:6379>
應用場景:獲取榜單數(shù)據(jù)(根據(jù)打分從高到底)
8.zrank獲取有序集合中元素key的排名
zrank key member
示例:
127.0.0.1:6379> zrank user:visit:rank 1002 (integer) 2 127.0.0.1:6379>
應用場景:獲取自己的排名
9.zrangebyscore 獲取有序集合中分數(shù)區(qū)間的元素
zrangebyscore key min max [ withscores ] [limit offset count]
根據(jù)分數(shù)區(qū)間獲取指定數(shù)量的集合,withscores 返回key時同時返回對應的分數(shù);limit 為分頁標識;offset 為分頁的起始位;count 為分頁的數(shù)量
示例:
127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 1) "1003" 2) "1002" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores 1) "1003" 2) "66" 3) "1002" 4) "80" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 0 1 1) "1003" 2) "66" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 1 1 1) "1002" 2) "80" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 1 2 1) "1002" 2) "80" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 0 2 1) "1003" 2) "66" 3) "1002" 4) "80" 127.0.0.1:6379> zrangebyscore user:visit:rank 60 90 withscores limit 2 1 (empty list or set) 127.0.0.1:6379>
應用場景:分頁獲取排名元素集合
10.zcount 獲取分值區(qū)間的元素數(shù)量
zcount key min max
示例:
127.0.0.1:6379> zcount user:visit:rank 60 90 (integer) 2 127.0.0.1:6379>
到此這篇關于Redis 中ZSET數(shù)據(jù)類型命令使用及對應場景總結的文章就介紹到這了,更多相關Redis 中ZSET數(shù)據(jù)類型命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
記錄一次并發(fā)情況下的redis導致服務假死的問題解決
由于Redis需要依賴于操作系統(tǒng)環(huán)境,如果系統(tǒng)資源受限,比如過量的進程在擠占系統(tǒng)資源、系統(tǒng)死鎖等情況,本文主要介紹了記錄一次并發(fā)情況下的redis導致服務假死的問題解決,感興趣的可以了解一下2023-09-09