高性能メモリデータベースの代表として、Redisは一般的にキャッシュとして使用されますが、それだけでなく、Redisはサービスレジストリとしても使用できます。Redisを使用して.Net5でサブスクリプション/公開を実装する方法について説明しましょう。 。
Redis pub / sub
Redisパブリッシュおよびサブスクライブ(pub / sub)は、送信者(pub)がメッセージを送信し、サブスクライバー(sub)がメッセージを受信することを意味します。
たとえば、日常生活では、私たちが注目しているWeChatパブリックアカウントは、さまざまな情報を私たちにプッシュすることがよくあります。これは、典型的なパブリッシュ/サブスクライブです。これはどのように行われますか?見てみましょう。
.Net5の実装
注:次のプロジェクトは、.Net5コンソールプログラムを使用して作成され
ます。1。最初にRedisPublishプロジェクトを作成して、公開サーバーをシミュレートします。Redis
パッケージを導入します
。2。次のコードを記述します。
static void Main(string[] args)
{
try
{
//创建一个公众号--创建一个主题
Console.WriteLine("SendMessage");
IRedisClientsManager redisClientManager = new PooledRedisClientManager("127.0.0.1:6379");
string topicname = "Tom is a good cat";
RedisPubSubServer pubSubServer = new RedisPubSubServer(redisClientManager, topicname)
{
OnMessage = (channel, msg) =>
{
//此处可以写入日志记录
Console.WriteLine("___________________________________________________________________");
},
OnStart = () =>
{
Console.WriteLine("发布服务已启动");
Console.WriteLine("___________________________________________________________________");
},
OnStop = () => { Console.WriteLine("发布服务停止"); },
OnUnSubscribe = channel => { Console.WriteLine(channel); },
OnError = e => { Console.WriteLine(e.Message); },
OnFailover = s => { Console.WriteLine(s); },
};
//接收消息
pubSubServer.Start();
while (true)
{
Console.WriteLine("请输入推送内容");
string message = Console.ReadLine();
redisClientManager.GetClient().PublishMessage(topicname, message);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
3.サブスクリプションクライアントをシミュレートするRedisSubプロジェクトを作成し
、次のコードを記述します
static void Main(string[] args)
{
try
{
using (RedisClient consumer = new RedisClient("127.0.0.1", 6379))
{
Console.WriteLine($"这是订阅客户端");
var subscription = consumer.CreateSubscription();
//接受到消息时
subscription.OnMessage = (channel, msg) =>
{
if (msg != "CTRL:PULSE")
{
//此处可以写入日志记录
}
};
//订阅频道时
subscription.OnSubscribe = (channel) =>
{
Console.WriteLine("订阅客户端:开始订阅" + channel);
};
//取消订阅频道时
subscription.OnUnSubscribe = (a) => { Console.WriteLine("订阅客户端:取消订阅"); };
//订阅频道
string topicname = "Tom is a good cat";
subscription.SubscribeToChannels(topicname);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
4.公開サーバーの電源を入れ、2つのサブスクライブクライアントをシミュレートします。
公開サーバーがプッシュコンテンツを入力し、2つのサブスクライブクライアントがプッシュコンテンツを受信します。
効果は次のとおりです。
このようにして、Redisに基づくパブリッシュ/サブスクライブは.Net5で実現されます。
この記事を読んだ後、それはあなたに役立ちます。助けて、気に入ってください。