返回顶部
首页 > 资讯 > 数据库 >Redis发布订阅和实现.NET客户端详解
  • 564
分享到

Redis发布订阅和实现.NET客户端详解

详解客户端Redis 2022-06-04 17:06:14 564人浏览 安东尼
摘要

前言 发布订阅在设计模式中也可以说是观察者模式,针对这个模式是处理对象间一对多的依赖关系的,当一个对象发生变化,其它依赖他的对象都要得到通知并更新。 然而它也有自己的缺点,就是当主题发生一系列的变化时,观察

前言

发布订阅在设计模式中也可以说是观察者模式,针对这个模式是处理对象间一对多的依赖关系的,当一个对象发生变化,其它依赖他的对象都要得到通知并更新。

然而它也有自己的缺点,就是当主题发生一系列的变化时,观察者都要做批量的更新,如果这样的更新成本很高,那么解决方法就是根据种类需求通知,而不能盲目的通知所有的观察者。

那针对这个缺点,一般的情况下,你没有需求谁订阅一个跟自己无关的消息推送呢?这也正好说明推送的消息需要整理而不能一窝蜂的什么消息都往一个通道里面抛,要分而治之,合理的设计发布通道的用途,也合理的订阅通道。

那么如此一来,升级到系统项目级别,他别给我们又带来啦,莫大的好处,便是:剥离系统耦合,减少单线功能的依赖关系,又正迎合啦高内聚,松耦合的系统架构设计

Redis中的发布/订阅功能

这一节参考官方文档:https://Redis.io/topics/pubsub

首先我准备啦1个redis服务,3个客户端,如下图所示:

查看图片

然后打开官方文档,首先可以看到以下6个命令,对,就只有这6个命令,只要你能掌握理解,发散思维灵活运用。吐纳,吐纳,那么道于此,生一,生二、生三,生万物,根本不在话下!!C,C,C,WC, 小伙,以后拯救世界就看你啦。

查看图片

下面我们使用这几个命令,做一个演示,便于你理解。

1、2个客户端订阅order.create通道消息,如下:

查看图片

2、最后一个客户端发布往order.create通道发布消息。如下:

查看图片

3、你会立马发现订阅此通道的另外2个客户端有信息输出出来,如下:

查看图片

简单不,一个发布订阅的基础功能以及完事啦。

那如果你对其他一些发布订阅管理系统比较了解的话,你立马会想到一个功能,类似RabbitMQ中的topic类型的匹配功能。那redis中有吗,就这6个命令,答案是有的。使用的命令为psubscribe。


127.0.0.1:6379> psubscribe * ---订阅所有通道
127.0.0.1:6379> psubscribe order.* ---订阅通道名称以order.开头的所有通道消息

那又如何取消订阅过的通道呢?


127.0.0.1:6379> unsubscribe order.create ---取消订阅
127.0.0.1:6379> punsubscribe order.* ---取消订阅通道名称以order.开头的所有通道消息

如何查看订阅信息呢?


127.0.0.1:6379> pubsub channels ---查看当前服务器订阅的所有通道
127.0.0.1:6379> pubsub channels order.* ---查看订阅通道名称以order.开头的所有通道
127.0.0.1:6379> pubsub numsub order.create user ---查看订阅order.create 和user 通道的订阅者数量,支持查询多个通道

呀,到此为止,6个命令已经用完啦。就是这么任性,对,你潜心修炼10多分钟已经学会啦redis中最上层的发布订阅技能。你可以出关,打败天下无敌手啦。

StackExchange.Redis实现redis中的发布订阅功能

那这一节呢,我也实在说不出怎么讲更合理点,我就上一个示例,你自己把代码拷贝去,玩玩吧。上代码。


static void Main(string[] args)
  {
   Console.WriteLine("请输入发布订阅类型?");
   var type = Console.ReadLine();
   if (type == "publish")
   {
    while (true)
    {
     Console.WriteLine("请输入要发布向哪个通道?");
     var channel = Console.ReadLine();
     Console.WriteLine("请输入要发布的消息内容.");
     var message = Console.ReadLine();
     sub.Publish(channel, message);
    }
   }
   else
   {
    Console.WriteLine("请输入您要订阅哪个通道的信息?");
    var channelkey = Console.ReadLine();
    sub.Subscribe(channelKey, (channel, message) =>
    {
     Console.WriteLine("接受到发布的内容为:" + message);
    });
    Console.WriteLine("您订阅的通道为:<< "+ channelKey + " >> ! 一切就绪,等待发布消息!勿动,一动就没啦!!");
    Console.ReadKey();
   }
  }

运行起来几个实例,来玩一玩。如下,5个,1个发布信息,4个订阅信息,其中2个订阅zhanglonghao通道,2个订阅bokeyuan通道。

查看图片

第一次我发布消息到zhanglonghao通道,发布的消息为:hello shuaige !!如下:

查看图片

可以看出只有订阅zhanglonghao通道的才接受到啦消息。

那再往bokeyuan通道里面发送,hello bokeyuan !

查看图片

到此为止,自己玩去吧。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

您可能感兴趣的文档:

--结束END--

本文标题: Redis发布订阅和实现.NET客户端详解

本文链接: https://lsjlt.com/news/11907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Redis发布订阅和实现.NET客户端详解
    前言 发布订阅在设计模式中也可以说是观察者模式,针对这个模式是处理对象间一对多的依赖关系的,当一个对象发生变化,其它依赖他的对象都要得到通知并更新。 然而它也有自己的缺点,就是当主题发生一系列的变化时,观察...
    99+
    2022-06-04
    详解 客户端 Redis
  • JAVA 实现 Redis 发布订阅
    Redis 发布订阅 发布订阅:消息发布者发布消息 和 消息订阅者接收消息,两者之间通过某种媒介联系起来 例如订杂志,当自己订阅了爱格杂志,每个月会发刊一本。到发布的时候派送员将杂志送到自己手上就能看到杂志内容。只有我们订阅了该杂志才会...
    99+
    2023-08-18
    redis java 缓存
  • Redis中如何将订阅消息发到WebSocket客户端
    PHP 的redis扩展是阻塞式 IO ,使用订阅/发布模式时,会导致整个进程进入阻塞。因此必须使用Swoole\Redis异步客户端来实现。实例代码$server = new swoole_websock...
    99+
    2024-04-02
  • redis发布订阅功能怎么实现
    redis发布订阅功能怎么实现?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Redis 发布订阅(pub/sub)是一种消息通信模式:发送...
    99+
    2024-04-02
  • Spring boot+redis实现消息发布与订阅
    一.创建spring boot项目 org.springframework.boot spring-boot-starter-data-redis ...
    99+
    2017-09-29
    Spring boot+redis实现消息发布与订阅
  • 利用Redis实现分布式消息发布订阅
    利用Redis实现分布式消息发布订阅在分布式系统中,消息的发布和订阅是常用的通信模式。在这个模式下,消息发布者将消息发送给一个或多个主题,订阅者则订阅感兴趣的主题,并接收相应的消息。为了实现这个模式,我们可以借助Redis这个高性能的内存数...
    99+
    2023-11-07
    分布式 redis 消息订阅
  • redis实现队列的阻塞、延时、发布和订阅
    目录普通队列阻塞队列发布订阅模式延时队列和优先级队列应用场景Redis不仅可作为缓存服务器,还可以用作消息队列。它的列表类型天生支持用作消息队列。如下图所示: 由于Redis的列表...
    99+
    2024-04-02
  • 如何利用Redis和C++实现发布-订阅功能
    如何利用Redis和C++实现发布-订阅功能,需要具体代码示例引言:Redis是一种开源的高性能键值存储系统,它支持多种数据结构,并提供了一系列的客户端库,适用于各种编程语言。Redis的发布-订阅功能是其最常用的功能之一,可以实现消息的发...
    99+
    2023-10-22
    C++ redis 发布订阅
  • redis怎么实现队列阻塞、延时、发布和订阅
    这篇“redis怎么实现队列阻塞、延时、发布和订阅”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“redis怎么实现队列阻塞、...
    99+
    2023-07-02
  • Redis实现消息的发布订阅原理分析
    目录一、什么是发布和订阅二、Redis的发布和订阅三、redis 发布订阅常用命令四、命令实战1、基本使用2、订阅符合要求的频道3、查看活跃频道五、发布订阅原理1、订阅频道原理2、发布信息原理3、退订信息原理一、什么是发...
    99+
    2022-07-25
    Redis消息发布 Redis消息订阅
  • 怎么利用Jedis实现Redis的订阅与发布
    怎么利用Jedis实现Redis的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Redis发布订阅Redis发布订阅是一种消息通信模式,发送者通...
    99+
    2023-05-31
    redis jedis
  • 使用python实现mqtt的发布和订阅
     使用python编写程序进行测试MQTT的发布和订阅功能。首先要安装:pip install paho-mqtt 我的MQTT部署在阿里云的服务器上面,所以我在本机上编写了python程序进行测试。然后在shell里面重新打开一个终端,...
    99+
    2023-01-31
    python mqtt
  • PHP实现redis订阅和发布(用于异步任务处理)
    1.概念名称及含义channel 频道:生产者和消费者直接操作的对象publish 生产者:向channel发送消息subscribe 消费者:订阅一个或多个channelpsubscribe 消费者:匹配订阅一个或多个chann...
    99+
    2022-04-26
    PHP实现redis订阅和发布(用于异步任务处理)
  • redis如何实现队列的阻塞、延时、发布和订阅
    这篇文章主要介绍了redis如何实现队列的阻塞、延时、发布和订阅的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇redis如何实现队列的阻塞、延时、发布和订阅文章都会有所收获,下...
    99+
    2024-04-02
  • go+redis实现消息队列发布与订阅的详细过程
    在做项目过程中,实现websocket得时候,不知道哪里写的不太合适,客户端消息收到一定程度,剩下的消息收不到,修改了缓冲区大小,还是没有解决问题,后面因为项目结束期比较紧张,没有时...
    99+
    2024-04-02
  • 如何利用Redis实现分布式消息发布与订阅
    如何利用Redis实现分布式消息发布与订阅引言:在分布式系统中,消息发布与订阅是一种常见的通信模式,可以实现不同模块之间的解耦。Redis作为一种高性能的键值对存储系统,可以用来实现分布式消息发布与订阅功能。本文将介绍如何使用Redis来实...
    99+
    2023-11-07
    分布式 redis 消息发布
  • Redis | 第8章 发布订阅与事务《Redis设计与实现》
    目录前言《Redis常用命令及示例总结(API)》:https://www.cnblogs.com/dlhjw/p/15639773.html1. 发布订阅1.1 频道的订阅与退订1.2 模式的订阅与退订1.3 发送消息1.4 查看订阅消...
    99+
    2016-06-20
    Redis | 第8章 发布订阅与事务《Redis设计与实现》
  • JS前端设计模式之发布订阅模式详解
    目录引言例子1:version1:version2:总结引言 昨天我发布了一篇关于策略模式和代理模式的文章,收到的反响还不错,于是今天我们继续来学习前端中常用的设计模式之一:发布-订...
    99+
    2022-11-13
    JS发布订阅模式 JS前端设计模式
  • Springboot整合redis实现发布订阅功能介绍步骤
    目录一、redis发布订阅简介二、几个核心概念解释三、适用场景四、与springboot的整合1、导入基础依赖2、配置文件3、自定义RedisSubConfig4、自定义消息监听器5...
    99+
    2024-04-02
  • SpringBoot+Redis实现消息的发布与订阅的示例代码
    目录1.什么是redis的发布与订阅2.Redis发布订阅3.命令行实现功能订阅主题模式匹配订阅发布消息取消订阅测试4.SpringBoot实现功能Springboot整合Redis...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作