使用redis进行消息推送
Redis支持这样一种特性,你可以将数据推到某个信息管道中,然后其它客户端可以通过订阅这些管道来获取推送过来的信息。使用Redis的Pub/Sub,接收方在某个channel注册为一个订阅者,然后监听这个channel,一旦有消息发到这个channel上则自动接收消息, 利用这个特性可以轻易的实现消息推送功能。
1. 使用Rediscli测试
客户端A订阅通道:
redis 127.0.0.1:> SUBSCRIBE channeltest
客户端B往该通道发送消息:
redis 127.0.0.1:> PUBLISH channeltest hello
(integer)
redis 127.0.0.1:> PUBLISH channeltest world
(integer)
然后客户端A就能获取到推送的信息
redis 127.0.0.1:> SUBSCRIBE channeltest
Reading messages... (press Ctrl-C to quit)
) "subscribe"
) "channeltest"
) (integer)
) "message"
) "channeltest"
) "hello"
) "message"
) "channeltest"
) "world"
2. 批量订阅测试
客户端A订阅通道:
redis 127.0.0.1:> SUBSCRIBE channeltest*
客户端B往该通道发送消息:
redis 127.0.0.1:6379> PUBLISH channeltest1 hello
(integer) 1
redis 127.0.0.1:6379> PUBLISH channeltest2 world
(integer)
然后客户端A就能获取到推送的信息:
redis 127.0.0.1:> PSUBSCRIBE channeltest*
Reading messages... (press Ctrl-C to quit)
) "psubscribe"
) "channeltest*"
) (integer)
) "pmessage"
) "channeltest*"
) "channeltest1"
) "hello"
) "pmessage"
) "channeltest*"
) "channeltest2"
) "world"
3. C#客户端实现
客户端使用TeamDev.Redis
class Program
{
static void Main(string[] args)
{
try
{
RedisDataAccessProvider redisDataAccessProvider = new RedisDataAccessProvider();
redisDataAccessProvider = new RedisDataAccessProvider();
redisDataAccessProvider.Configuration.Host = "192.168.1.10";
redisDataAccessProvider.Configuration.Port = ;
redisDataAccessProvider.Connect(); redisDataAccessProvider.ChannelSubscribed += new ChannelSubscribedHandler(redisDataAccessProvider_ChannelSubscribed);
redisDataAccessProvider.MessageReceived += new MessageReceivedHandler(redisDataAccessProvider_MessageReceived);
redisDataAccessProvider.Messaging.Subscribe("al");
redisDataAccessProvider.Messaging.Subscribe("b1");
}
catch (Exception e)
{
Console.WriteLine("连接Redis错误:" + e.Message);
} Console.ReadLine();
} static void redisDataAccessProvider_MessageReceived(string channelname, string message)
{
if (channelname == "a1")
{
Console.WriteLine(message);
Console.ReadKey();
}
} static void redisDataAccessProvider_ChannelSubscribed(string channelname)
{
Console.WriteLine(channelname);
}
}
使用redis进行消息推送的更多相关文章
- php+redis 学习 五 消息推送
<?php header('content-type:text/html;chaeset=utf-8'); /** * redis实战 * * 发布 * * @example php publi ...
- C# BS消息推送 SignalR Hubs环境搭建与开发(二)
1. 前言 本文是根据网上前人的总结得出的. 环境: SignalR2.x,VS2015,Win10 2. 开始开发 1)新建一个MVC项目,叫做SignalRDemo 2)安装SignalR包 In ...
- MPush开源消息推送系统:简洁、安全、支持集群
引言由于之前自己团队需要一个消息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近 ...
- 异步tcp通信——APM.Server 消息推送服务的实现
消息推送服务 服务器推送目前流行就是私信.发布/订阅等模式,基本上都是基于会话映射,消息对列等技术实现的:高性能.分布式可以如下解决:会话映射可采用redis cluster等技术实现,消息对列可使用 ...
- SSE(Server-sent events)技术在web端消息推送和实时聊天中的使用
最近在公司闲着没事研究了几天,终于搞定了SSE从理论到实际应用,中间还是有一些坑的. 1.SSE简介 SSE(Server-sent events)翻译过来为:服务器发送事件.是基于http协议,和W ...
- 开源实时消息推送系统 MPush
系统介绍 mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点.同时也是少有的 ...
- 使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[开发篇]
在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品.所谓 识不足则多虑,威不足则多怒.所以就是怕,只能跟领导说了运用极光的推送功能 ...
- python 全栈开发,Day131(向app推送消息,玩具端消息推送)
先下载github代码,下面的操作,都是基于这个版本来的! https://github.com/987334176/Intelligent_toy/archive/v1.4.zip 注意:由于涉及到 ...
- 用 centrifugo 搭建 消息推送服务器 docker + rancher 搭建
关于消息推送服务器 目前有很多第三方的开放成熟的推送服务.鉴于项目需要 我们项目需要自己搭建 自己的推送服务. 我们的推送应用场景 聊天消息 项目内部消息提醒 移动设备接受消息 应用到的相关软件工具知 ...
随机推荐
- MyEclipse常用插件使用教程
一.Findbugs 1. 配置 1.1 打开FindBugs视图: Windows => Show View => Other… => FindBugs => Bug Inf ...
- GJM : Taurus.MVC 2.0 开源发布:WebAPI开发教程 [转载]
Taurus.MVC 2.0 开源发布:WebAPI开发教程 转载自http://www.cnblogs.com/cyq1162/p/6069020.html 因是新手 粘贴时有一个版权问题 本文原 ...
- spring 的自建request请求
public String myRequest() throws IOException, URISyntaxException{ String url="ht ...
- IOS 调用WebService(同步和异步)
因为公司的服务全都是webservice,每次总要花费大量时间在调试服务上面,干脆就写了一个解析wsdl的项目,希望将来能用上吧.还未经过烘焙,有问题,还请高手点播点播. 下面,我拿天气服务的wsdl ...
- TaggingJS – 可以灵活定制的 jQuery 标签系统插件
TaggingJS 是一款 jQuery 插件,用来创建高度可定制的前端标签系统.这款插件不到3KB ,支持主流浏览器.有几种方法来定制 TaggingJS 的默认行为:一是使用 custom_op ...
- Molecule – 帮助你构建跨平台的 HTML5 游戏
Molecule 框架由拥有超过五年手机游戏开发经验的游戏开发者开发.由于移动浏览器与实际的 HTML5 规范的兼容性的改进和内部硬件的自然进化,HTML5 手机游戏真正有可能流行起来. 您可能感兴趣 ...
- 【zepto学习笔记01】核心方法$()
前言 我们移动端基本使用zepto了,而我也从一个小白变成稍微靠谱一点的前端了,最近居然经常要改到zepto源码但是,我对zepto不太熟悉,其实前端水准还是不够,所以便私下偷偷学习下吧,别被发现了 ...
- 读《数据结构与算法 Javascript描述》 | 平淡无奇
“平淡无奇”,一句话总结. 当初买这本书的原因,在意的是有没有什么令人惊喜的东西,特别是针对Javascript代码的奇思妙想,所以就买下了这本书. 在买的几本书里面,最先看的也是这一本,但看起目录就 ...
- 安装 Ubuntu 后的个人常用配置
在 ASA 猪队友的带领下,拥抱开源世界,用上了Ubuntu.资深强迫症现身说法,配置符合自己使用习惯的Ubuntu. 1. 窗口标题栏显示菜单项 打开系统设置->外观->行为,在[显示窗 ...
- SAP 录屏BDC使用—实例
1) 输入TCode:SHDB进入BDC录制初始界面,该界面可以实现已创建BDC Session信息的查看.删除及锁定等操作 2) 单击工具栏 Newrecording 按钮创建一个新的BDC,系 ...