2014啦,时间如流水般哗啦啦的溜走啦,试问时间都去哪儿了?
很久没更新博客,抽空把遇到的问题和思路的整理写点。
reids的 发布订阅是为用户订阅频道,广播发送的一个消息推送机制,功能挺美的,可是我目前遇到的是如果推送消息量太大会出现性能问题,有待后续研究了,当然有哪位好心朋友已经有好的解决方案了,可以分享下。哈哈
publish:讲消息发送到指定的频道
shell:
#对没有订阅者的频道发送信息
redis> publish msg “推送公告”
(interger) 0
#向一个订阅者的频道发送信息
redis> publish msg_1 "亲,该收衣服了"
(interger) 1
#向多个订阅者的频道发送信息
redis> publish msg_2 "卧槽,你们都在偷窥我啊"
(interger) 10
PHP-API:
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->publish('msg', '节操一屏幕');
subscribe:订阅给定的一个或多个频道的消息
shell:
# 订阅 msg 和 msg_1两个频道
# 1 - 6 行是执行 subscribe 之后的反馈信息
# 第 7 - 9 行才是接收到的第一条信息
# 第 10 - 12 行是第二条
redis> subscribe msg msg_1
Reading messages... (press Ctrl-C to quit)
1) "subscribe" # 返回值的类型:显示订阅成功
2) "msg" # 订阅的频道名字
3) (integer) 100 # 目前已订阅的频道数量
1) "subscribe"
2) "msg_1"
3) (integer) 1
1) "message" # 返回值的类型:信息
2) "msg" # 来源(从那个频道发送过来)
3) "推送公告" # 信息内容
1) "message"
2) "msg_1"
3) "亲,该收衣服了"
PHP-API:
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->subscribe(array('msg'), 'callback');
function callback($instance, $channelName, $message) {
echo $channelName, "==>", $message,PHP_EOL;
}
后续实践过程待续更新......
注:订阅subscribe是需要实施监控的,如果是测试可以常开一个终端窗口即可或通过nodejs做个监控,这样才能实施收到订阅信息。