随笔 - 410  文章 - 0  评论 - 519  阅读 - 148万 

发布/订阅,故名思义,就是一个发布消息,多个订阅的客户端都收到这个消息。

举两个实际的例子,第一个想到的是电台,电台在专属的调频上播出节目,多个收音机只要在这个调频上,就可以收听到这个电台节目。

另一个例子是博客的RSS,只要博言主发表了博客,只要订阅了该博客的人都会收到通知邮件。

下面就结合redis的相关命令来看一下。

publish channel message,将信息message发送到指的频道channel。

subscribe channel [channel ...] 订阅给定的一个或多个频道的信息。

Psubscribe pattern [pattern ...] 订阅一个或多个符合给定模式的频道。

clipboard

clipboard[1]

看到了吧,这就是传说中的发布订阅。

StackExchange.Redis中的发布订阅

发布消息:ISubscriber.Publish(string channel, string message);

订阅消息:ISubscriber.Subscribe(string channel, Action<string channel, string message> action);

订阅时要异步去做,单独一个线程一直监听。

可以参考如下代码。

发布消息:

subscriber.Publish(PbsRedisSubscribeChannels.ClearCacheChannel, message);

订阅:

复制代码
public static void StartListenClearCache()

        {

            _listenTask = Task.Factory.StartNew(() =>

            {

                Listen();

            }, TaskCreationOptions.LongRunning);

        }

        /// <summary>

        /// 监听线程内容:监听发布的消息

        /// </summary>

        private static void Listen()

        {

            try

            {

                var client = RedisHelper.GetClientManager();

                var subscriber = client.GetSubscriber();

                subscriber.Subscribe(PbsRedisSubscribeChannels.ClearCacheChannel, HandleSubsMessage);

                subscriber.Subscribe(PbsRedisSubscribeChannels.ReportCacheChannel, HandleSubsMessage);

            }

            catch (Exception ex)

            {

                var mailContent = $"Redis订阅异常:{AppDomain.CurrentDomain.FriendlyName}({AppDomain.CurrentDomain.BaseDirectory}){Environment.NewLine}{ex.ToString()}";

                SendMail(mailContent);

            }

        }
复制代码
posted on   永远的麦子  阅读(2118)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示