Redis學習日記 04 Redis實現優先順序佇列

2022-05-05 07:54:13 字數 981 閱讀 9235

優先順序佇列 是不同於先進先出佇列的另一種佇列。每次從佇列中取出的是具有最高優先權的元素。

關鍵命令:brpop(從佇列右邊彈出)/blpop(從佇列左邊彈出)

brpop/blpop和rpop/lpop命令類似,都是從佇列裡彈出乙個元素,只不過brpop在佇列沒有新元素的時候會阻塞,它接受乙個timeout引數,用來表示阻塞的時間,當超過該時間還是未獲得新元素則會返回nil,如果為0則表示一直阻塞下去。除此之外它還可以接受多個key,如:>brpop key1,key2 timeout。

只有乙個key獲得新元素

blpop queue:1 queue:2 queue:3 0

lpush queue:2 task

"queue:2" ----key

"task" ----最新獲取的元素

(467.91s) ----阻塞的時長

多個key都獲得新元素

lpush queue:2 task1

lpush queue:3 task2

blpop queue:1 queue:2 queue:3 0

立馬輸出了剛才新增的元素以及所屬的key,如下:

"queue:2" -----獲得新元素的所有key中從左到右第乙個key

"task1" -----對應key的value

通過blpop/brpop多個key都獲得新元素時,只返回獲得新元素的所有key中從左到右第乙個key和對應的value的特性,我們可以把想優先執行的任務佇列對應的key放到最左邊就可以實現(粗略)的優先順序佇列了。之所以說是「粗略」,是因為它的優先順序是佇列級別,優先順序高的佇列,裡面所有的元素的優先順序都比後面的佇列元素優先順序高;而每個佇列內部還是fifo(先進先出)。

redis學習日記

remote dictionary server redis 是乙個由salvatore sanfilippo寫的key value儲存系統。redis提供了一些豐富的資料結構,包括 lists,sets,ordered sets 以及 hashes 當然還有和memcached一樣的 string...

Redis學習日記

redis是乙個開源的使用ansi c語言編寫 遵守bsd協議 支援網路 可基於記憶體亦可持久化的日誌型 key value資料庫 並提供多種語言的api。它通常被稱為資料結構伺服器,因為值可以是字串 string 雜湊 hash 列表 list 集合 sets 和有序集合 sort sets re...

C 學習日記 04 基礎運算

c 支援一下這些算術運算子 名稱 符號示例1加法 x y2減法 x y3乘法 x y4除法 x y5求餘 x y 加法 加法是從乙個數中加上另乙個數的運算,也就是求和 int x 80 8 cout x 輸出88減法 減法是從乙個數中減去另乙個數的運算 int x 88 8 cout x 輸出80乘...