Redis 发布订阅

1、订阅者,即接收消息的用户

订阅者先要与服务端建立连接,这样发布者才可以正常的发布消息,订阅者也才可以接收到消息。

下面是订阅者端的示例代码:

<?php
// 设置scoket连接有效时长
ini_set('default_scoket_timeout', -1);
// 实例化redis
$redis = new \Redis();
$res = $redis->connect('127.0.0.1', 6379);
/**
 * 接收订阅消息
 * ['task1', 'task2']	订阅的频道名 可以多个
 * $redis redis对象
 * $currentChannel	当前的频道名
 * $message 订阅消息内容
 */
$redis->subscribe(['task1', 'task2'], function($redis, $currentChannel, $message) {
	switch ($currentChannel) {
		case 'task1':
			echo '这是task1的频道';
			echo "\n";
			echo $message."\t\n";  
			break;
		case 'task2':
			echo '这是task2的频道';
			echo "\n";
			echo $message."\t\n";  
			break;
	}
});

因为订阅者要持续连接服务,才可以正常接收消息,所以不好直接通过浏览器的方式访问,这里我们通过命令行的方式去访问它。

php sub.php

在这里插入图片描述
这个时候,订阅端的工作就准备完成了,接下来就等发布端发布消息过来了。

2、发布者,即执行发布的管理人员

下面是发布端的示例代码:

<?php
$redis = new \Redis();
$res = $redis->connect('127.0.0.1', 6379);

$key = 'task2';	// Channel 订阅这频道的订阅者,都能收到消息
$value = 'hello world!';
$res = $redis->publish($key, $value);
if (!$res) {
	echo '发布订阅失败!';
	die;
}
echo '发布订阅成功!';

准备就绪后,就可以执行发布命令了(在浏览器中访问这个文件)
在这里插入图片描述
查看cmd(订阅者)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值