redis高階4 訊息通知 訂閱發布

2021-07-26 03:40:45 字數 1734 閱讀 5831

1 使用lpush+rpop即可實現佇列的概念。並通過迴圈,來讀取list中資料。

不足:需要使用迴圈,每隔1s讀取佇列。

2 brpop,有訊息加入佇列就發通知。brpop會阻塞佇列,rpop不會。

brpop返回值介紹:

假如在指定時間內沒有任何元素被彈出,則返回乙個 

nil 和等待時長。

反之,返回乙個含有兩個元素的列表,第乙個元素是被彈出元素所屬的 

key ,第二個元素是被彈出元素的值。

redis> llen course

(integer) 0

redis> rpush course algorithm001

(integer) 1

redis> rpush course c++101

(integer) 2

redis> brpop course 30

1) "course" # 彈出元素的 key

2) "c++101" # 彈出元素的值

3 優先順序佇列

brpop 可以同時監聽多個佇列。

會從左到右依次讀取。

4 發布訂閱模式

publish+subscribe。

作為訊息佇列來說,企業中選擇mq的還是多數,因為像rabbit,rocket等mq中介軟體都屬於很成熟的產品,效能一般但可靠性較強,而kafka原本設計的初衷是日誌統計分析,現在基於大資料的背景下也可以做運營資料的分析統計,而redis的主要場景是記憶體資料庫,作為訊息佇列來說可靠性太差,而且速度太依賴網路io,在伺服器本機上的速度較快,且容易出現資料堆積的問題,在比較輕量的場合下能夠適用。希望有更專業的人來總結總結。

# 對沒有訂閱者的頻道傳送資訊

redis> publish bad_channel "can any body hear me?"

(integer) 0

# 向有乙個訂閱者的頻道傳送資訊

redis> publish msg "good morning"

(integer) 1

# 向有多個訂閱者的頻道傳送資訊

redis> publish chat_room "hello~ everyone"

(integer) 3# 訂閱 msg 和 chat_room 兩個頻道

# 1 - 6 行是執行 subscribe 之後的反饋資訊

# 第 7 - 9 行才是接收到的第一條資訊

# 第 10 - 12 行是第二條

redis> subscribe msg chat_room

reading messages... (press ctrl-c to quit)

1) "subscribe" # 返回值的型別:顯示訂閱成功

2) "msg" # 訂閱的頻道名字

3) (integer) 1 # 目前已訂閱的頻道數量

1) "subscribe"

2) "chat_room"

3) (integer) 2

1) "message" # 返回值的型別:資訊

2) "msg" # **(從那個頻道傳送過來)

3) "hello moto" # 資訊內容

1) "message"

2) "chat_room"

3) "testing...haha"

Redis學習 4 發布訂閱

redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。當有新訊息通過 publish 命令傳送給頻道 channel1 時,這個訊息就會被傳送給訂閱它的三個客戶端 訂閱乙個或多個符合給定模式的頻道。pu...

Redis訊息通知

redis的訊息通知通過列表型別實現,分為兩種模式 阻塞式 發布 訂閱式 阻塞式 顧名思義,訊息生產者負責生產訊息,並將訊息放到佇列的一端,訊息的消費者負責消費訊息,從佇列的另一端取出訊息,然後對其進行消費,假如訊息的生產者突然罷工了,或者訊息的生產速度趕不上消費者的消費速度,那麼訊息的消費者會一直...

Redis自學筆記 4 4高階 訊息通知

傳遞任務的佇列.與任務佇列進行互動的實體有兩類,一類是生產者,一類是消費者.生產者將需要處理的任務放入任務佇列中,二消費者不斷從任務佇列中讀入任務 資訊並執行.優點 松耦合 生產者和消費者無需知道彼此實現的細節 易於擴充套件 消費者可以有多個,而且可以分布在不同伺服器 3.4.2節中的lpush和r...