.net core如何使用Redis發(fā)布訂閱
Redis是一個(gè)性能非常強(qiáng)勁的內(nèi)存數(shù)據(jù)庫(kù),它一般是作為緩存來(lái)使用,但是他不僅僅可以用來(lái)作為緩存,比如著名的分布式框架dubbo就可以用Redis來(lái)做服務(wù)注冊(cè)中心。接下來(lái)介紹一下.net core 使用Redis的發(fā)布/訂閱功能。
Redis 發(fā)布訂閱
Redis 發(fā)布訂閱(pub/sub)是一種消息通信模式:發(fā)送者(pub)發(fā)送消息,訂閱者(sub)接收消息。
Redis 客戶端可以訂閱任意數(shù)量的通道。
下圖展示了頻道 channel1 , 以及訂閱這個(gè)頻道的三個(gè)客戶端 —— client2 、 client5 和 client1 之間的關(guān)系:

當(dāng)有新消息通過 PUBLISH 命令發(fā)送給頻道 channel1 時(shí), 這個(gè)消息就會(huì)被發(fā)送給訂閱它的三個(gè)客戶端:

使用Redis命令
首先,通過subscribe redismessage命令使兩個(gè)客戶端訂閱redismessage通道:

然后再打開一個(gè)Redis客戶端,使用命令publish redismessage "消息內(nèi)容"發(fā)布消息

使用.net core 實(shí)現(xiàn)
這里我選擇的連接驅(qū)動(dòng)為 StackExchange.Redis,這里需要注意的是 ServiceStack.Redis連接驅(qū)動(dòng)已經(jīng)逐漸商業(yè)化,4.0及以上版本都具有限制,所以選擇的免費(fèi)且好用的StackExchange.Redis,使用nuget安裝即可。
建立訂閱客戶端
//創(chuàng)建連接
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
ISubscriber sub = redis.GetSubscriber();
//訂閱名為 messages 的通道
sub.Subscribe("messages", (channel, message) => {
//輸出收到的消息
Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] {message}");
});
Console.WriteLine("已訂閱 messages");
Console.ReadKey();
}
建立發(fā)布客戶端
//創(chuàng)建連接
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
ISubscriber sub = redis.GetSubscriber();
Console.WriteLine("請(qǐng)輸入任意字符,輸入exit退出");
string input;
do
{
input = Console.ReadLine();
sub.Publish("messages", input);
} while (input != "exit");
}
下面運(yùn)行了一個(gè)發(fā)布客戶端,兩個(gè)訂閱客戶端:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- .NET?Core使用Redis實(shí)現(xiàn)創(chuàng)建分布式鎖
- .net core 3.1 Redis安裝和簡(jiǎn)單使用
- 在.NET?Core中使用CSRedis的詳細(xì)過程
- ASP.NET?Core中使用Redis實(shí)現(xiàn)緩存
- .NET Core中使用Redis與Memcached的序列化問題詳析
- .net core使用redis基于StackExchange.Redis
- asp.net性能優(yōu)化之使用Redis緩存(入門)
- 詳解.NET中使用Redis數(shù)據(jù)庫(kù)
- 詳解Asp.net Core 使用Redis存儲(chǔ)Session
- 詳解如何在ASP.NET Core中使用Redis
- .net web優(yōu)雅地使用 redis的方法步驟
相關(guān)文章
ASP.net如何連接SQL SERVER 2012數(shù)據(jù)庫(kù)
這篇文章主要介紹了ASP.net連接SQL SERVER 2012數(shù)據(jù)庫(kù)的方法,非常不錯(cuò),在項(xiàng)目開發(fā)中經(jīng)常可以用到,需要的朋友可以參考下2016-08-08
asp.net程序編譯調(diào)試時(shí)偶爾出現(xiàn)訪問被拒絕的錯(cuò)誤的解決方法
asp.net程序編譯調(diào)試時(shí)偶爾出現(xiàn)訪問被拒絕的錯(cuò)誤的解決方法...2007-04-04
asp.net gridview實(shí)現(xiàn)全選,反選與刪除記錄的操作代碼
asp.net gridview實(shí)現(xiàn)全選,反選與刪除記錄的操作代碼,需要的朋友可以參考下。2011-07-07
.net Core連接MongoDB數(shù)據(jù)庫(kù)的步驟詳解
這篇文章主要給大家介紹了關(guān)于.net Core連接MongoDB數(shù)據(jù)庫(kù)步驟的相關(guān)資料,文中將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02
.Net使用SuperSocket框架實(shí)現(xiàn)WebSocket前端
這篇文章介紹了.Net使用SuperSocket框架實(shí)現(xiàn)WebSocket前端,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
asp.net在iframe中彈出信息并執(zhí)行跳轉(zhuǎn)問題探討
本代碼將實(shí)現(xiàn)在iframe中彈出信息并執(zhí)行跳轉(zhuǎn),感興趣的朋友可以參考下2013-04-04
Asp.net使用SignalR實(shí)現(xiàn)聊天室的功能
這篇文章主要介紹了Asp.net使用SignalR實(shí)現(xiàn)聊天室的功能的相關(guān)資料,需要的朋友可以參考下2016-04-04
.NET 6開發(fā)TodoList應(yīng)用之實(shí)現(xiàn)數(shù)據(jù)塑形
在查詢的場(chǎng)景中,還有一類需求不是很常見,就是在前端請(qǐng)求中指定返回的字段。所以這篇文章主要介紹了.NET 6如何實(shí)現(xiàn)數(shù)據(jù)塑形,需要的可以參考一下2022-01-01

