1 什么是redis订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
这个可以理解为 我关注了你 你发了信息我就可以立马收的到
2 发布订阅的场景在哪里
以下是我理解的几个场景当然还有更多的场景
2.1 典型的网页上的消息可以做到实时通知
2.2 订单下单以后 通过redis订阅实时通知库存改变
2.3 接口需要做一些比如发送邮件 写日志等功能的时候可以运用到redis订阅了 这样会加快接口返回时间
3php如何实现 实时发布订阅
知道了什么是redis订阅 并且知道redis订阅的场景 接下来就是撸代码了
3.1 cli.php
cli.php
//这个为订阅端的代码 主要注意的是这个代码放在cli下执行 php cli.php
<?php
while (true){
echo time();
ini_set('default_socket_timeout', -1); //不超时
$redis = new Redis();
$redis->connect('127.0.01', 6379, 3600);
$redis->auth('123456'); //设置密码
$result = $redis->subscribe(['test'],'callback');
print_r($result);
sleep(0.1);
}
function callback($instance,$channelName,$message)
{
print_r($message);
}
启动以后接下来我们来个发布端的代码
3.2 发布端的代码
pub.php
//这个代码可以放在普通网页下执行
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379, 3600);
$redis->auth('123456'); //设置密码
$message = '测试一下';
$ret=$redis->publish('test',$message);
运行上面的代码
得到结果
到这里php redis订阅发布成功
其实总体的还是比较简单的
当然这些代码在实际使用过程中还是可以优化的比如cli.php
里面可以考虑使用swoole进行常驻进程而不是死循环