[Redis]发布/订阅

摘要

有这样的一个场景,管理员需要发布一条消息,所有的客户端都要受到通知。然后想到了发布订阅模式。使用redis的发布与订阅实现起来更简单一些,说做就做,这里弄个简单的demo,先模拟下。

核心代码

首先使用Nuget安装redis程序集。

服务端发布消息webApi

向频道chanel-1 发送消息。

  public class MessageController : ApiController
    {
        [HttpGet]
        [Route("api/send/{msg}")]
        public HttpResponseMessage SendMessage(string msg)
        {
            IRedisClientsManager clientManager = new PooledRedisClientManager("[email protected]:6379");
            var client = clientManager.GetClient();
            client.PublishMessage("channel-1", msg);
            return new HttpResponseMessage() { Content = new StringContent(JsonConvert.SerializeObject(new { _code = 200, _msg = "Success" })) };
        }

    }

订阅客户端代码

   class Program
    {
        static void Main(string[] args)
        {
            Subscript();
            Console.Read();
        }
        /// <summary>
        /// 订阅
        /// </summary>
        public static void Subscript()
        {
            IRedisClientsManager clientManager = new PooledRedisClientManager("password@192.168.1.102:6379");
            var client = clientManager.GetClient();
            //创建订阅
            IRedisSubscription subscription = client.CreateSubscription();
            //接收消息处理Action
            subscription.OnMessage = (channel, msg) =>
            {
                Console.WriteLine("频道【{0}】[{1}]", channel, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                Console.WriteLine(msg);
            };
            //订阅事件处理
            subscription.OnSubscribe = (channel) =>
            {
                Console.WriteLine("订阅客户端:开始订阅" + channel);
            };
            //取消订阅事件处理
            subscription.OnUnSubscribe = (a) => { Console.WriteLine("订阅客户端:取消订阅"); };
            //订阅频道
            subscription.SubscribeToChannels("channel-1");

        }

    }
}

测试

通过postman调用接口,开启订阅客户端。

订阅的客户端

结语

发现通过这种方式实现的发布与订阅还是很简单的。

转载:博客地址:http://www.cnblogs.com/wolf-sun/

时间: 2024-09-30 00:48:36

[Redis]发布/订阅的相关文章

RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式.我想大家即使没有使用过,也已经耳熟能详了. 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪. 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式.当然如果只将报

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 . client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 实例 以下实例演示了发布订阅是如何工作的.在我们实例中我们创建了订阅频道名为 redi

Redis 发布订阅、事务、脚本、连接、HyperLogLog

欢迎大家加入 459479177QQ群进行交流 本次主要介绍Redis的发布订阅.事务.脚本.连接.HyperLogLog 一.发布订阅 1>psubscribe,订阅一个或多个指定的频道 Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "tv1" 3) (integer) 1 127.0.0.1:6379> psubscribe tv2 tv3                \

Redis发布订阅使用方法

Redis发布订阅 发布订阅模式中发布消息的为publisher即发布者,接收消息的为subscriber即订阅者.在Redis中,所有的消息通过channel即频道进行发布,一个发布者可以向多个channel发布消息,一个订阅者也可以订阅多个channel.Redis不对消息进行持久化,如果消息发布时订阅者还没有进行订阅,则不会再收到此消息. 发布订阅命令 命令 格式 说明 PUBLISH PUBLISH channel message 发布message到指定的channel SUBSCRI

Redis发布订阅

Redis 的 pub sub实现了邮件系统,发送者(在 Redis 术语中被称为发布者)发送的邮件,而接收器(用户)接收它们.由该消息传送的链路被称为信道. Redis客户端可以订阅任何数目的通道. 例子 以下举例说明如何发布用户的概念工作.在下面的例子给出一个客户端订阅一个通道名为redisChat redis 127.0.0.1:6379> SUBSCRIBE redisChat Reading messages... (press Ctrl-C to quit) 1) "subsc

利用Redis发布订阅完成tomcat集群下的消息通知

博主是刚入职半年的新手,如果有说的不对的地方请各位大佬见谅! 这是博主的第一篇博客,可能排版以及一些描述有不合理的地方还请勿喷,希望大家尽可能的多给我这样的新手一些鼓励让我能在写博客的道路上走下去. 进入正题,首先开发背景 近期公司的一些项目上出现了内存溢出的问题,究其原因是缓存的数据量太大导致jvm内存溢出,产品的架构上比较老所以针对缓存这块,领导叫我去重构移植到Redis中,博主之前并没有学习过Redis以及关于分布式系统的并发问题,所以也是对我的一次挑战,还好没有辜负领导的期望在期望时间之

Redis发布订阅机制

原文:Redis发布订阅机制 1. 什么是Redis Redis是一个开源的内存数据库,它以键值对的形式存储数据.由于数据存储在内存中,因此Redis的速度很快,但是每次重启Redis服务时,其中的数据也会丢失,因此,Redis也提供了持久化存储机制,将数据以某种形式保存在文件中,每次重启时,可以自动从文件加载数据到内存当中.  Redis的架构包括两个部分:Redis Client和Redis Server.Redis客户端负责向服务器端发送请求并接受来自服务器端的响应.服务器端负责处理客户端

Linux 安装redis,redis发布订阅,持久化

安装redis 1.安装redis的方式 -yum (删除这个yum安装的redis,我们只用源码编译安装的) -rpm -源码编译 2.删除原本的redis yum remove redis -y 3.下载redis源码 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 4.解压缩 tar -zxf redis-4.0.10.tar.gz 5.切换redis源码目录 cd redis-4.0.10.tar.gz 6.编译源文件

redis 发布订阅、geo、bitmap、hyperloglog

1.发布订阅 简介 发布订阅类似于广播功能.redis发布订阅包括 发布者.订阅者.Channel 命令 命令 作用 时间复杂度 subscribe channel 订阅一个频道 O(n) unsubscribe channel ... 退订一个/多个频道 O(n) publish channel msg 将信息发送到指定的频道 O(n+m),n 是频道 channel 的订阅者数量, M 是使用模式订阅(subscribed patterns)的客户端的数量 pubsub CHANNELS 查

我在生产项目里是如何使用Redis发布订阅的?(二)Java版代码实现(含源码)

上篇文章讲了在实际项目里的哪些业务场景用到Redis发布订阅,这篇文章就讲一下,在Java中如何实现的. 图解代码结构 发布订阅的理论以及使用场景大家都已经有了大致了解了,但是怎么用代码实现发布订阅呢?在这里给大家分享一下实现方式. 我们以上篇文章的第三种使用场景为例,先来看一下整体实现类图吧. 解释一下,这里我们首先定义一个统一接口`ICacheUpdate`,只有一个`update`方法,我们令`Service`层实现这个方法,执行具体的更新操作. 我们再来看`RedisMsgPubSub`