• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Redis > Redis发布订阅和实现.NET客户端详解

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

作者:张龙豪 字体:[增加 减小] 来源:互联网 时间:2017-05-11

张龙豪通过本文主要向大家介绍了redis客户端,redis客户端工具,redis客户端下载,redis客户端命令,redis java客户端等相关知识,希望本文的分享对您有所帮助

前言

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

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

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

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

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.开头的所有通道消息
</div>

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

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

如何查看订阅信息呢?

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 通道的订阅者数量,支持查询多个通道
</div>

呀,到此为止,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();
   }
  }
</div>

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

 

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

 

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

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

 

到此为止,自己玩去吧。

总结

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Redis发布订阅和实现.NET客户端详解
  • Redis的Python客户端redis-py安装使用说明文档

相关文章

  • 2017-05-11Redis 中spark参数executor-cores引起的异常解决办法
  • 2017-05-11在CentOS 7环境下安装Redis数据库详解
  • 2017-08-28centos安装redis
  • 2017-05-11Redis教程(七):Key操作命令详解
  • 2017-05-11Redis中的数据过期策略详解
  • 2017-05-11Redis中主键失效的原理及实现机制剖析
  • 2017-05-11Redis实现多人多聊天室功能
  • 2017-05-11Redis上实现分布式锁以提高性能的方案研究
  • 2017-05-11redis配置文件redis.conf中文版(基于2.4)
  • 2017-05-11Redis主从复制问题和扩容问题的解决思路

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • CentOS Linux系统下安装Redis过程和配置参数说明
    • Redis Stat的安装指南
    • windows环境下Redis+Spring缓存实例讲解
    • 通过 Redis 实现 RPC 远程方法调用(支持多种编程语言)
    • 解锁redis锁的正确姿势
    • 利用ganglia监控redis的最新解决方法
    • Redis实现信息已读未读状态提示
    • Redis中实现查找某个值的范围
    • redis中使用redis-dump导出、导入、还原数据实例
    • 详解利用redis + lua解决抢红包高并发的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有