redis sub/pub

redis sub/pub 踩坑系列:

首先, 我们先了解相关知识

redis sub/pub(消息订阅) 是一种消息通信模式,pub是发送消息(生产者),,pub 是接收者(消费者)。其中,还隐藏着channel(通信频道)、联系,pub 通过多个 channel 发送给 sub,sub 最终进行消费

优劣对比
优势: 可监听多个通信频道, 可多个消费着消费
缺点:
数据可靠性无法保障, 因 pub 没有持久话 发送的消息是即发及丢, 无法确认 sub 接收到消息。
扩展性差: 不能通过及时增加消费者消费消息, 当 pub 消息增加过多时会造成阻塞效果,阻塞时间越长则会造成消息丢失, 数据丢失分险很大
资源消耗较高: 在pub/sub中消息发布者不需要独占一个Redis的链接,而消费者则需要单独占用一个Redis的链接

常用场景: 专栏发布,音视频发布 推送关注者,

sub/pub 代码(PHP):

		// pub(生产者)
		// 实例化 redis
	  	$redisObj = new Redis(host, port);
	  	$redisObj -> auth(password);
        try {
        	// 进行发送消息
            $redisObj->publish($channelName, json_encode($sendData);
        }catch (\Exception $e){
            echo $e->getmessage();
        }
		// sub (消费者)
		 try { 
            $redisObj = new  \Redis();
            //建立一个长链接
            $redisObj->pconnect($redisHost, $redisPort);
            $redisObj->auth($redisPass);
            $redisObj->subscribe(array($channelName, $channelName2), function ($redis, $chan, $msg){
				echo "channel:".$chan.",message:".$msg."\n";
			})           
        }catch (\Exception $e){
            print_r($e->getMessage());
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值