湘潭市网站建设,移动网站开发实训报告,微商店铺怎么开通,汕头云建站模板概念#xff1a; 在 .NET 6 中使用 Redis 的/订发布阅模式。发布/订阅#xff08;Pub/Sub#xff09;是 Redis 支持的一种消息传递模式#xff0c;其中一个或多个发布者向一个或多个订阅者发送消息,Redis 客户端可以订阅任意数量的频道。 多个客户端可以订阅一个相同的频道…概念 在 .NET 6 中使用 Redis 的/订发布阅模式。发布/订阅Pub/Sub是 Redis 支持的一种消息传递模式其中一个或多个发布者向一个或多个订阅者发送消息,Redis 客户端可以订阅任意数量的频道。 多个客户端可以订阅一个相同的频道如下图所示 当有新消息通过 PUBLISH 命令发送给频道 channel1 时 这个消息就会被发送给订阅它的三个客户端一个信息可以通过频道发布给多个客户端 .net6实现Redis发布订阅
先安装StackExchange.Redis包引入依赖。 创建连接Redis类RedisConnectionHelper
redis默认用6379端口前提是本地安装了redis服务
public static class RedisConnectionHelper
{private static LazyConnectionMultiplexer lazyConnection new LazyConnectionMultiplexer(() {// 连接到 Redis 服务器localhost:6379 是本地默认 Redis 服务器地址return ConnectionMultiplexer.Connect(127.0.0.1:6379);});public static ConnectionMultiplexer Connection lazyConnection.Value;
}
创建发布信息类RedisPublisher 用来发布订阅信息
public class RedisPublisher{/// summary/// 发布/// /summary/// param namechannel/param/// param namemessage/parampublic void PublishMessage(string channel, string message){// 获取 Redis 连接var redis RedisConnectionHelper.Connection;// 获取 Redis 数据库var db redis.GetDatabase();// 发布消息到指定频道//通过 ISubscriber 对象你可以发布消息也可以订阅某个频道。ISubscriber sub redis.GetSubscriber();//channel: 要发布消息的频道名称。频道可以是任何字符串当发布者发送消息时所有订阅了这个频道的订阅者都会收到消息。/// message: 发布的消息内容。这可以是任何可以转换为字符串的内容如纯文本、JSON、XML等。//当这行代码执行时消息会被发送到 channel并通知所有当前订阅了该频道的客户端。sub.Publish(channel, message);Console.WriteLine($消息已发布到频道 {channel}: {message});//换句话说发布者发送的消息被“广播”给所有订阅了该频道的监听者。}}
创建订阅信息类RedisSubscriber模仿其他服务器节点订阅频道的操作。 public class RedisSubscriber{/// summary/// 订阅/// /summary/// param namechannel/parampublic void SubscribeToChannel(string channel){// 获取 Redis 连接var redis RedisConnectionHelper.Connection;// 获取 Redis 数据库ISubscriber sub redis.GetSubscriber();//通过 sub.Subscribe 方法订阅了一个指定的 Redis 频道// 并且定义了一个回调函数当该频道收到消息时回调函数会被触发执行相应的逻辑或者业务。// 订阅指定频道sub.Subscribe(channel, (redisChannel, message) {//redisChannel它代表当前接收到消息的 Redis 频道名称。//redisChannel: 这是自动传入的参数代表的是消息来自的频道名称。// 这对于订阅多个频道时尤其有用因为你可以知道具体是哪一个频道发来的消息。// 当收到消息时触发Console.WriteLine($我是教师管理功能模块从频道 {redisChannel} 收到消息: {message});Console.WriteLine(我可以做相关业务了~~~~);});Console.WriteLine($已订阅频道: {channel});}} 运行Main方法代码 创建发布者和订阅者对象。订阅 test-channel 频道确保订阅者可以接收到发布到该频道的消息。发布者向 test-channel 发布一条消息所有订阅者将收到该消息。延迟 5 秒钟以便程序不立即退出从而保证订阅者有足够时间接收消息 static async Task Main(string[] args){ ///Redis 是一种“广播”式的消息传递系统任何订阅了该频道的客户端都可以接收到消息。// 创建发布者和订阅者实例var publisher new RedisPublisher();var subscriber new RedisSubscriber();// 订阅一个频道subscriber.SubscribeToChannel(test-channel);// 发布者发布消息到频道publisher.PublishMessage(test-channel, 我是学生管理这个功能模块的我一把所有2025学生的毕业生学生设置为了已经毕业状态了);// 防止应用程序立即退出await Task.Delay(5000);}
运行结果 总结
Redis 的发布/订阅模式非常适用于实现实时的消息传递系统比如聊天应用、通知服务等。通过 StackExchange.Redis 库C# 开发者可以非常方便地使用这种模式来实现类似的功能。