聲明 文章不是徹底的原創,部分例子是收集網絡資料redis
首先 我先引入一個你們熟知的觀點:Reids能夠做爲消息隊列來使用
redis提供了兩種方式來作消息隊列,一種是生產者消費者模式,一種是發佈訂閱模式。服務器
本篇文章將從 異步,解耦,分佈式,可靠四部分來探討Redis中的消息隊列以及應用場景網絡
異步異步
異步的使用場景【符合咱們的真實的世界,真實世界原本就是異步的】,生活中大部分的使用都是基於異步的,好比發送郵件與回覆郵件的請求響應模型。分佈式
一個service與另一個service有三種交互方式:命令(Commands)、事件(Events)以及查詢(Queries)。一次請求能夠理解爲由主服務與觸發服務和關聯服務組成。spa
Commands 。命令是一個操做。但願在另外一個服務中執行某些操做的一個請求。 會改變系統狀態的東西。 命令期待有響應。blog
Events 。事件既是一個事實也是一個觸發器。 發生了一些事情,表示爲通知。隊列
Queries 。查詢是一個請求,是一個查找一些東西的請求(request)。重要的是,查詢不會使得系統狀態發生改變。事件
解耦ip
解耦的基礎含義倡導一種是由上而下,分而治之的思想。
解耦又是消息隊列最本質的目的。把消息的送達和處理分開,才真正實現消息系統的解耦。
基於消息的模型,關心的是通知,而非處理 。只關心核心流程,多個任務的狀況下,發送通知就好了。
經典的生產者消費者模式的消息模型,經過Broker分離生產與消息,Broker簡單來講就是消息服務器,負責消息的接受,存取。