.Net5使用Redis实现发布/订阅

Redis作为高性能内存数据库的代表,它一般是作为缓存来使用,但是它不仅于此,Redis也可以来做服务注册中心,下面就来说说如何在.Net5下使用Redis实现订阅/发布。

Redis pub/sub

Redis 发布订阅(pub/sub)简单来说就是发送者(pub)发送消息,订阅者(sub)接收消息。
在这里插入图片描述

日常生活中比如咱们关注的微信公众号会经常给我们推送各种信息,这就是典型的发布订阅,这是怎么做的呢,下面咱们一起来看看

.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.开启发布服务器,模拟两个订阅客户端
在这里插入图片描述
发布服务器输入推送内容,两个订阅客户端接收到推送内容
效果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210330205318418.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Bh

这样就在.Net5下基于Redis实现了发布/订阅
如此文看完对您有所帮助请帮忙点点赞。

猜你喜欢

转载自blog.csdn.net/paradoxx/article/details/115333885