一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis發布訂閱和實現.NET客戶端詳解

Redis發布訂閱和實現.NET客戶端詳解

2019-11-04 14:52張龍豪 Redis

發布訂閱在應用級其作用是為了減少依賴關系,通常也叫觀察者模式。主要是把耦合點單獨抽離出來作為第三方,隔離易變化的發送方和接收方。下面這篇文章主要給大家介紹了關于Redis發布訂閱和實現.NET客戶端的相關資料,需要的

前言

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

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

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

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

Redis中的發布/訂閱功能

這一節參考官方文檔:https://redis.io/topics/pubsub

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

Redis發布訂閱和實現.NET客戶端詳解

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

Redis發布訂閱和實現.NET客戶端詳解

下面我們使用這幾個命令,做一個演示,便于你理解。

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

Redis發布訂閱和實現.NET客戶端詳解

2、最后一個客戶端發布往order.create通道發布消息。如下:

Redis發布訂閱和實現.NET客戶端詳解

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

Redis發布訂閱和實現.NET客戶端詳解

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

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

?
1
2
127.0.0.1:6379> psubscribe * ---訂閱所有通道
127.0.0.1:6379> psubscribe order.* ---訂閱通道名稱以order.開頭的所有通道消息

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

?
1
2
127.0.0.1:6379> unsubscribe order.create ---取消訂閱
127.0.0.1:6379> punsubscribe order.* ---取消訂閱通道名稱以order.開頭的所有通道消息

如何查看訂閱信息呢?

?
1
2
3
127.0.0.1:6379> pubsub channels ---查看當前服務器訂閱的所有通道
127.0.0.1:6379> pubsub channels order.* ---查看訂閱通道名稱以order.開頭的所有通道
127.0.0.1:6379> pubsub numsub order.create user ---查看訂閱order.create 和user 通道的訂閱者數量,支持查詢多個通道

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

StackExchange.Redis實現redis中的發布訂閱功能

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static void Main(string[] args)
  {
   Console.WriteLine("請輸入發布訂閱類型?");
   var type = Console.ReadLine();
   if (type == "publish")
   {
    while (true)
    {
     Console.WriteLine("請輸入要發布向哪個通道?");
     var channel = Console.ReadLine();
     Console.WriteLine("請輸入要發布的消息內容.");
     var message = Console.ReadLine();
     sub.Publish(channel, message);
    }
   }
   else
   {
    Console.WriteLine("請輸入您要訂閱哪個通道的信息?");
    var channelKey = Console.ReadLine();
    sub.Subscribe(channelKey, (channel, message) =>
    {
     Console.WriteLine("接受到發布的內容為:" + message);
    });
    Console.WriteLine("您訂閱的通道為:<< "+ channelKey + " >> ! 一切就緒,等待發布消息!勿動,一動就沒啦!!");
    Console.ReadKey();
   }
  }

運行起來幾個實例,來玩一玩。如下,5個,1個發布信息,4個訂閱信息,其中2個訂閱zhanglonghao通道,2個訂閱bokeyuan通道。

Redis發布訂閱和實現.NET客戶端詳解

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

Redis發布訂閱和實現.NET客戶端詳解

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

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

Redis發布訂閱和實現.NET客戶端詳解

到此為止,自己玩去吧。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
主站蜘蛛池模板: 丝瓜香蕉视频 | 亚洲成av人片在线观看天堂无码 | 国产精品2| 青青草国产免费久久久91 | 精品国产线拍大陆久久尤物 | 国产福利一区二区三区 | 亚洲品质自拍网站 | 44444色视频在线观看 | 亚洲国产精品久久久久 | 99久久精品无码一区二区毛片 | 亚洲大尺码 | 日本三级斤 | 欧美一级片免费 | 午夜精品久久久久久 | 欧美久在线观看在线观看 | 国产精品思瑞在线观看 | 精品国产美女福利在线 | 午夜小视频免费 | 亚洲人成网站在线观看青青 | 欧美精品亚洲精品日韩1818 | 日本海鸣馆 | 亚洲日本免费 | 99精品在线免费 | 国产免费不卡视频 | www.青青草原 | 被教官揉了一晚上的奶小说 | 国产精品日韩欧美一区二区 | 国产欧美日韩图片一区二区 | 国产一区二区三区久久精品 | 青草视频久久 | 超级乱淫伦短篇小说做车 | 国产亚洲综合成人91精品 | 亲爱的客栈第二季免费观看完整版 | 亚洲欧美综合一区 | 国产99精品免费视频看6 | 日本不卡视频免费的 | 婷婷天天 | 青青青在线观看国产精品 | 亚裔aⅴ艳星katsuni | 欧美高清3dfreexxxx性 | 欧美性f |