天天看點

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

釋出訂閱在設計模式中也可以說是觀察者模式,針對這個模式是處理對象間一對多的依賴關系的,當一個對象發生變化,其它依賴他的對象都要得到通知并更新。

然而它也有自己的缺點,就是當主題發生一系列的變化時,觀察者都要做批量的更新,如果這樣的更新成本很高,那麼解決方法就是根據種類需求通知,而不能盲目的通知所有的觀察者。

那針對這個缺點,一般的情況下,你沒有需求誰訂閱一個跟自己無關的消息推送呢?這也正好說明推送的消息需要整理而不能一窩蜂的什麼消息都往一個通道裡面抛,要分而治之,合理的設計釋出通道的用途,也合理的訂閱通道。

那麼如此一來,更新到系統項目級别,他别給我們又帶來啦,莫大的好處,便是:剝離系統耦合,減少單線功能的依賴關系,又正迎合啦高内聚,松耦合的系統架構設計。

扯拉這麼多,隻當廢話啦,因為我這一篇的序言裡面也不知道寫什麼段子啦,就這樣吧。

首先我準備啦1個redis服務,3個用戶端,如下圖所示:

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

然後打開官方文檔,首先可以看到以下6個指令,對,就隻有這6個指令,隻要你能掌握了解,發散思維靈活運用。吐納,吐納,那麼道于此,生一,生二、生三,生萬物,根本不在話下!!C,C,C,WC, 小夥,以後拯救世界就看你啦。

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

下面我們使用這幾個指令,做一個示範,便于你了解。

1、2個用戶端訂閱order.create通道消息,如下:

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

2、最後一個用戶端釋出往order.create通道釋出消息。如下:

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

3、你會立馬發現訂閱此通道的另外2個用戶端有資訊輸出出來,如下:

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

簡單不,一個釋出訂閱的基礎功能以及完事啦。

那如果你對其他一些釋出訂閱管理系統比較了解的話,你立馬會想到一個功能,類似rabbitmq中的topic類型的比對功能。那redis中有嗎,就這6個指令,答案是有的。使用的指令為psubscribe。

那又如何取消訂閱過的通道呢?

如何檢視訂閱資訊呢?

呀,到此為止,6個指令已經用完啦。就是這麼任性,對,你潛心修煉10多分鐘已經學會啦redis中最上層的釋出訂閱技能。你可以出關,打敗天下無敵手啦。

那這一節呢,我也實在說不出怎麼講更合理點,我就上一個示例,你自己把代碼拷貝去,玩玩吧。上代碼。

運作起來幾個執行個體,來玩一玩。如下,5個,1個釋出資訊,4個訂閱資訊,其中2個訂閱zhanglonghao通道,2個訂閱bokeyuan通道。

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

第一次我釋出消息到zhanglonghao通道,釋出的消息為:hello shuaige !!如下:

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

可以看出隻有訂閱zhanglonghao通道的才接受到啦消息。

那再往bokeyuan通道裡面發送,hello bokeyuan !

Redis的釋出訂閱及.NET用戶端實作序言Redis中的釋出/訂閱功能StackExchange.Redis實作redis中的釋出訂閱功能總結

到此為止,自己玩去吧。

接下來是大家最喜歡的總結内容啦,内容有二,如下:

1、希望能關注我其他的文章。

2、部落格裡面有沒有很清楚的說明白,或者你有更好的方式,那麼歡迎加入左上方的2個交流群,我們一起學習探讨。

繼續閱讀