.net core 使用Redis的发布订阅

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"); }

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

相关文章: 

  • 理解并从头搭建redis集群

  • asp.net core 实战之 redis 负载均衡和"高可用"实现

原文地址:http://www.cnblogs.com/stulzq/p/7542012.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL性能优化的最佳20+条经验

转载自 MYSQL性能优化的最佳20条经验 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结…

P1038-神经网络【拓扑排序】

正题 题目链接:https://www.luogu.org/recordnew/lists?uid52918&pidP1038 题目大意 有n个点&#xff0c;输入点给出权值&#xff0c;其余点的权值为 Ci∑i,j∈EWi,jCj−UiCi∑i,j∈EWi,jCj−UiCi<0Ci<0的话就不算 求输出层的权值 解题思路 求出一个点之前要求出…

用数组选出最大的数并且排序

选出数组最大的值 #include<stdio.h> main(){//选出最大的 int a[5]{200,110,101,1010,5},i,max;maxa[0];for(i0;i<5;i){if(a[i]>max){maxa[i];}} printf("%d",max); }排序 #include<stdio.h> main(){//排序 int a[5]{200,110,101,1010,5},i,max…

java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现

大家好&#xff0c;我是雄雄&#xff0c;欢迎你的到来~ 前言 需求是这样的&#xff0c;当用户关注公司服务&#xff08;公众&#xff09;号时&#xff0c;就自动注册成为了会员&#xff0c;且通过小程序设置提醒&#xff0c;然后后台可以通过服务&#xff08;公众&#xff09;…

王者荣耀是怎样炼成的(二)《王者荣耀》unity安装及使用的小白零基础入门

工欲善其事&#xff0c;必先利其器。上回书《王者荣耀是怎样炼成的&#xff08;一&#xff09;《王者荣耀》用什么开发&#xff0c;游戏入门&#xff0c;unity3D介绍》说到&#xff0c;开发游戏用到unity和C#。本篇博客将从零开始做一个unity的基础入门。\(^o^)/~欢迎大家的斧正…

史上最全MySQL 大表优化方案(长文)

转载自 史上最全MySQL 大表优化方案&#xff08;长文&#xff09; 当MySQL单表记录数过大时&#xff0c;增删改查性能都会急剧下降&#xff0c;可以参考以下步骤来优化&#xff1a; 一、单表优化 除非单表数据未来会一直不断上涨&#xff0c;否则不要一开始就考虑拆分&…

阶乘的值

#include<stdio.h> main(){//阶乘 int a,i,sum;printf("请输入你所需要的阶乘数&#xff1a;\n");scanf("%d",&a);sum1;for(i1;i<a;i){sumsum*i;} printf("%d",sum); } 输出阶乘的数

微信公众平台安全模式下传输xml数据包时解密方式

大家好&#xff0c;我是雄雄&#xff0c;欢迎你的到来。 前言&#xff1a; 最近一直在搞微信服务&#xff08;公众&#xff09;号开发&#xff0c;前面也写过一篇文章&#xff0c;是关于一开始配置、验证token以及接收用户触发关注/取消关注事件时的接口&#xff0c;文章地址&…

nssl1148,jzoj5461-购物【可撤回贪心,堆】

正题 jzoj题目链接:https://jzoj.net/senior/#main/show/5461 题目大意 有n个物品&#xff0c;m元&#xff0c;k个打折券。 每个物品打折前pip_ipi​元&#xff0c;打折后qiq_iqi​元&#xff0c;求最多能买多少物品。 解题思路 用可撤回贪心。 先将p和q分开排序&#xff0c…

“.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere

8月份已经发布了.NET Core 2.0, 大会Keynote 一开始花了大量的篇幅回顾.NET Core 2.0的发布&#xff0c;社区的参与度已经非常高。大会的主题是.NET 无处不在&#xff1a;NET Core 2.0已经完成了服务端的布局&#xff0c;那么各种终端的覆盖就是Xamarin的主场&#xff0c;Xamar…

金三银四铜五铁六

转载自 金三银四铜五铁六 金三银四铜五铁六 据说&#xff0c;金三银四&#xff0c;截止今天为止面试黄金时间已经过去十之八九&#xff0c;而鲁班&#xff08;LB &#xff0c;以下全文均用LB代替&#xff09;恰逢是这批面试大军其中的一名小兵&#xff0c;很不幸今年恰逢遇…

WebSocket In ASP.NET Core

What Is WebSocket?WebSocket 是一种在单个 TCP 连接上进行全双工通讯的协议&#xff0c;是建立在TCP上、且独立的协议。在WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以进行持久性的连接&#xff0c;并进行双向数据传输。为了建立…

微信服务(公众)号实现用户关注自动注册成为会员

大家好&#xff0c;我是雄雄。交流技术可以进入到我的社区【雄雄的小课堂】 前言 看本篇文章之前&#xff0c;可以先看看前面两篇&#xff1a; java实现微信服务&#xff08;公众&#xff09;号用户关注时&#xff0c;获取openid&#xff0c;安全模式下的加密解密实现 微信公…

nssl1149,jzoj5455-拆网线【贪心】

正题 jzoj题目链接:https://jzoj.net/senior/#main/show/5455 题目大意 一棵树中选k个点要求留下最小边使每个点都至少有一个点连接。 解题思路 我们先不考虑树的限制&#xff0c;那么k个点满足要求的话最小边数为(k1)/2(k1)/2(k1)/2&#xff0c;然后我们考虑一颗树上有多少…

完成图片拖拽

<html> <head><meta charset"UTF-8"><title>拖拽</title><style type"text/css">#box1{width: 100px;height: 100px;background-color: yellow;position:absolute;}#box2{width: 100px;height: 100px;background-colo…

深入探索 Java 热部署

转载自 深入探索 Java 热部署 简介 在 Java 开发领域&#xff0c;热部署一直是一个难以解决的问题&#xff0c;目前的 Java 虚拟机只能实现方法体的修改热部署&#xff0c;对于整个类的结构修改&#xff0c;仍然需要重启虚拟机&#xff0c;对类重新加载才能完成更新操作。对…

手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)

背景公司去年开始使用dotnet core开发项目。公司的总体架构采用的是微服务&#xff0c;那时候由于对微服务的理解并不是太深&#xff0c;加上各种组件的不成熟&#xff0c;只是把项目的各个功能通过业务层面拆分&#xff0c;然后通过nginx代理&#xff0c;项目最终上线。但是这…

谈谈那些被面与面的经历(面试杂谈)

大家好&#xff0c;我是雄雄。 前言 每个程序员&#xff0c;都会经历大大小小的面试&#xff0c;当你在一个公司做技术大牛时&#xff0c;你可能充当的是一个面试官的角色&#xff0c;此时由你来面别人&#xff1b;当你要去一个公司做大牛时&#xff0c;此时的你&#xff0c;充…

nssl1150,jzoj5309-密室【分层建图,SPFA】

正题 jzoj题目链接:https://jzoj.net/senior/#main/show/5309 题目大意 有n个点&#xff0c;m条边,k种钥匙。有些点分布了钥匙&#xff0c;有些边需要一些钥匙才可以通过&#xff0c;求1到n的最短路。 解题思路 将图分成2k2k层&#xff0c;每一层用二进制表示不同的钥匙情况…

如何在面试中介绍自己的项目经验

转载自 如何在面试中介绍自己的项目经验 在面试时&#xff0c;经过寒暄后&#xff0c;一般面试官会让介绍项目经验 。常见的问法是&#xff0c;说下你最近的&#xff08;或最拿得出手的&#xff09;一个项目。 根据我们的面试经验&#xff0c;发现有不少候选人对此没准备&am…