redis的发布和订阅功能
来源:互联网 发布:linux execl 返回值 编辑:程序博客网 时间:2024/06/05 20:32
原理
redis的发布和订阅是个比较高深的概念,我一开始接触的时候感觉很茫然,但是后面用了下发现还是简单的。看来还是多需要自己尝试。
其实和消息队列差不多的原理,就是一个发布的频道,所有订阅这个频道的都能收到消息。即一个client可以订阅多个 channel,也可以向多个channel发送消息。
代码展示
我觉得还是直接上代码大家理解的比较快。
首先,我们需要两个php脚本,一个表示client,即订阅方,一个表示server,即发布方。
<?phppublish.php//发布方 即publish的代码展示$redis = new Redis();$redis->connect('127.0.0.1', 6379);//使用订阅的话需要连接redis的端口$message='test message';//发布消息的内容$message .= "\n";while(1){ $ret=$redis->publish('test_chennel',$message);//发布,前面一个参数是发布的频道,后面一个参数是发送的内容 file_put_contents("test.txt",$ret.PHP_EOL,FILE_APPEND);}?>
然后订阅方的代码:
subscribe.php<?php//连接到发布方的redis上,然后定义一些基本的参数$redis = new Redis();$redis->connect('127.0.0.1', 6379);define('_MESSAGE_COUNT',1000);$message_index=0;$message_str="";try { //订阅信息,第一个参数表示要订阅的频道,是个数组,可以多个频道,第二个参数表示回调函数 $result=$redis->subscribe(array('test_chennel'), 'callback');} catch (Exception $e) { echo 'error'; exit;}//redis订阅的回调函数,第一个参数表示实体,第二个参数表示订阅的频道,第三个参数表示收到的数据,然后可以根据收到的数据进行自己的逻辑处理function callback($instance, $channelName, $message) { global $message_index,$message_str; //获取订阅操作之后的逻辑很简单,我这里就是直接输出订阅到的消息 if($message){ $message_index++; $message_str=$message; if($message_index>_MESSAGE_COUNT){ echo $message_str; $message_index=0; $message_str=""; } }}?>
代码执行步骤,首先是执行发布的代码,即在linux环境下执行
php publish.php
然后在新的窗口执行
php subscribe.php
定于的消息如下结果展示如下,只要进程不停,就一直会输出订阅到的test message的消息:
2 0
- redis的发布和订阅功能
- redis的发布和订阅功能
- Redis 发布订阅功能
- Redis 的订阅和发布
- redis发布和订阅
- redis订阅和发布
- redis 订阅与发布功能
- Redis发布与订阅功能
- Redis的订阅和发布代码
- Redis的事务机制和订阅发布
- Redis的发布订阅
- Redis的发布订阅
- Redis的发布订阅
- Redis的发布订阅
- redis的发布订阅
- redis 消息订阅和发布
- Redis-发布和订阅服务
- Redis的订阅发布机制
- Python新手学习基础之条件语句——elif语句
- 利用VMware在虚拟机上安装Zookeeper集群
- RegexUtils(常用验证方法)
- 自定义View
- 预增量和预减量
- redis的发布和订阅功能
- Struts2基础学习总结
- 高精度计算(二)高精加
- HDU-3440 House Man
- 【caffe-Windows】mnist实例编译之model的生成
- JQuery JS Ajax比较
- EasyUI+SpringMVC登录路径要加http://
- java中的IO整理
- html+css