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.开启发布服务器,模拟两个订阅客户端
发布服务器输入推送内容,两个订阅客户端接收到推送内容
效果如下:
这样就在.Net5下基于Redis实现了发布/订阅
如此文看完对您有所帮助请帮忙点点赞。