.net core如何使用Redis发布订阅

发布时间 - 2026-01-11 03:18:14    点击率:

Redis是一个性能非常强劲的内存数据库,它一般是作为缓存来使用,但是他不仅仅可以用来作为缓存,比如著名的分布式框架dubbo就可以用Redis来做服务注册中心。接下来介绍一下.net core 使用Redis的发布/订阅功能。

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的通道。

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

使用Redis命令

首先,通过subscribe redismessage命令使两个客户端订阅redismessage通道:

然后再打开一个Redis客户端,使用命令publish redismessage "消息内容"发布消息

使用.net core 实现

这里我选择的连接驱动为 StackExchange.Redis,这里需要注意的是 ServiceStack.Redis连接驱动已经逐渐商业化,4.0及以上版本都具有限制,所以选择的免费且好用的StackExchange.Redis,使用nuget安装即可。

建立订阅客户端

//创建连接
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
  ISubscriber sub = redis.GetSubscriber();

  //订阅名为 messages 的通道

  sub.Subscribe("messages", (channel, message) => {

    //输出收到的消息
    Console.WriteLine($"[{DateTime.Now:HH:mm:ss}] {message}");
  });
  Console.WriteLine("已订阅 messages");
  Console.ReadKey();
}

建立发布客户端

//创建连接
using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379"))
{
  ISubscriber sub = redis.GetSubscriber();

  Console.WriteLine("请输入任意字符,输入exit退出");

  string input;

  do
  {
    input = Console.ReadLine();
    sub.Publish("messages", input);
  } while (input != "exit");
}

下面运行了一个发布客户端,两个订阅客户端:

Demo下载

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# .net  # core  # Redis  # Redis发布订阅  # 发布订阅  # Redis数据库基础与ASP.NET Core缓存实现  # ASP.NET Core扩展库ServiceStack.Redis用法介绍  # .NET Core中使用Redis与Memcached的序列化问题详析  # .net core使用redis基于StackExchange.Redis  # 详解Asp.net Core 使用Redis存储Session  # 详解如何在ASP.NET Core中使用Redis  # ASP.NET Core中使用Redis实现缓存  # 客户端  # 的是  # 是一个  # 发送给  # 就会  # 是一种  # 可以用  # 请输入  # 然后再  # 来做  # 好用  # 介绍一下  # 需要注意  # 大家多多  # 可以用来  # 发送消息  # 新消息  # 但是他  # 展示了  # exit 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解jQuery中基本的动画方法  如何撰写建站申请书?关键要点有哪些?  Laravel如何实现本地化和多语言支持?(i18n教程)  详解Huffman编码算法之Java实现  java中使用zxing批量生成二维码立牌  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Python文件流缓冲机制_IO性能解析【教程】  Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  如何在建站宝盒中设置产品搜索功能?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Linux网络带宽限制_tc配置实践解析【教程】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何在腾讯云免费申请建站?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  潮流网站制作头像软件下载,适合母子的网名有哪些?  bing浏览器学术搜索入口_bing学术文献检索地址  Laravel如何为API生成Swagger或OpenAPI文档  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Bootstrap整体框架之JavaScript插件架构  高端网站建设与定制开发一站式解决方案 中企动力  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  网易LOFTER官网链接 老福特网页版登录地址  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  如何快速建站并高效导出源代码?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Swift中switch语句区间和元组模式匹配  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速使用云服务器搭建个人网站?  Python结构化数据采集_字段抽取解析【教程】  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何用搬瓦工VPS快速搭建个人网站?  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  Bootstrap整体框架之CSS12栅格系统