Redis 中ZSET資料型別命令使用及對應場景總結

香吧香發表於2023-01-02

轉載請註明出處:

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分之後返回新的分數

  應用場景:更新排名的依據,如:閱讀量排行榜,每閱讀一次,增加一次閱讀量

5.zcard獲取有序集合key中元素總個數

zcard key

  示例

127.0.0.1:6379> zcard user:visit:rank
(integer) 1
127.0.0.1:6379>

  應用場景:獲取排行集合的元素總個數

 6.zrange 正序獲取分值範圍內的元素

zrange key start stop [withscores]

  正序獲取有序集合key從start下標到stop下標的元素;使用withscores 引數時,返回的集合元素帶有分數,不適用withscores的引數時,直接返回排名

  注意:引數start和stop都是基於零的索引,即0是第一個元素,1是第二個元素,以此類推。

  它們也可以是負數,表示從有序集合的末尾的偏移量,其中-1是有序集合的最後一個元素,-2是倒數第二個元素,等等。

  示例:

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>

   應用場景:根據打分的升序排序獲取元素集合

 7.zrevrange 倒序獲取集合元素

zrevrange key start stop [withscores]

  倒序獲取有序集合key從start下標到stop下標的元素

  注意:引數start和stop都是基於零的索引,即0是第一個元素,1是第二個元素,以此類推。

  它們也可以是負數,表示從有序集合的末尾的偏移量,其中-1是有序集合的最後一個元素,-2是倒數第二個元素,等等。

  示例:

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> 

  應用場景:獲取榜單資料(根據打分從高到底)

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 獲取有序集合中分數區間的元素

zrangebyscore key min max [ withscores ] [limit offset count]

  根據分數區間獲取指定數量的集合,withscores 返回key時同時返回對應的分數;limit 為分頁標識;offset 為分頁的起始位;count 為分頁的數量

  示例:

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 獲取分值區間的元素數量

zcount key min max

  示例:

127.0.0.1:6379> zcount user:visit:rank 60 90
(integer) 2
127.0.0.1:6379>

  

 

相關文章