Redis 5 有序集合新增命令

Redis 5 已經發布了,對有序集合新增了4個命令:

  • ZPOPMAX
  • ZPOPMIN
  • BZPOPMAX
  • BZPOPMIN

下面看一下這幾個命令的作用和用法。

ZPOPMAX

命令:

ZPOPMAX key [count]

作用:

從指定集合中刪除並返回 count 個 score 值最高的元素。如果沒有指定 count,默認值爲 1。如果 count 大於 1,返回值按 score 排序,score 最大的第一個返回。

示例:

# 添加元素
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
# 查看集合元素及其score
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
# 返回2個score值最高的元素
redis> ZPOPMAX myzset 2
1) "three"
2) "3"
3) "two"
4) "2"
# 查看集合剩餘元素
redis> ZRANGE myzset 0 -1
1) "one"

ZPOPMIN

命令:

ZPOPMIN key [count]

作用:

與 ZPOPMAX 一樣,只是返回 score 最小的。

BZPOPMAX

命令:

BZPOPMAX key [key ...] timeout

作用:

BZPOPMAX 是 ZPOPMAX 的阻塞版本,作用與 ZPOPMAX 相同,只是在目標集合中沒有元素時會阻塞,timeout 參數指定了過期時間(0 表示永不超時)。

示例:

在窗口1中執行:

# 添加集合元素
redis> ZADD myzset2 1 "one" 2 "two"
(integer) 2
redis> ZRANGE myzset2 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
# 取出一個元素,集合中還剩一個元素
redis> BZPOPMAX myzset2 0
1) "myzset2"
2) "two"
3) "2"
# 取出一個元素,集合空了
redis> BZPOPMAX myzset2 0
1) "myzset2"
2) "one"
3) "1"
# 再取元素時,會阻塞
redis> BZPOPMAX myzset2 0
# 進入阻塞狀態

在窗口2中添加元素:

redis> ZADD myzset2 3 "tree"
(integer) 1

查看窗口1

redis> BZPOPMAX myzset2 0
1) "myzset2"
2) "tree"
3) "3"

顯示出窗口2中添加的數據,然後退出阻塞。

BZPOPMIN

命令:

BZPOPMIN key [key ...] timeout

作用:

與 BZPOPMAX 一樣,只是選擇 score 最小的元素。

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