美文网首页php之路
redis 发布和订阅的php应用(异步任务处理)

redis 发布和订阅的php应用(异步任务处理)

作者: 简书说我的昵称违规 | 来源:发表于2017-02-08 15:32 被阅读674次

Redis 发布订阅

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:


pubsub1

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:


pubsub2

PHP应用

可简单利用redis的这一功能做一个异步任务处理应用,首先建立一个(任务)订阅者,接收(任务)发布者发送的任务消息。

//taskWorker.php 任务处理者
ini_set('default_socket_timeout', -1);  //避免在默认的配置下,1分钟后终端了与redis服务器的链接
$redis = new Redis();
$redis->connect('192.168.1.12',6379);
$redis->subscribe(['task_queue'], function($redis,$chan,$msg){
    switch ($chan) {
        case 'task_queue':
            $task = unserialize($msg);
            if($task['task']=='send_email'){
                // send email
            }
            // do other job
            break;
        default:
            break;
    }
});

运行该脚本:

php taskWorker.php

生产环境中可利用supervisor后台运行该脚本,处理任务消息。可以把这个脚本当作一个任务处理机器,接收各种任务指示并处理。

//taskPub.php  任务发布者
$redis = new Redis();
$redis->connect('192.168.1.12');
$task = [
    'task'=>'send_email',
    'data'=>'你好,隔壁老王',
];
$redis->publish('task_queue', serialize($task));

该脚本可以封装成一个易用的类,融入与你的业务代码中进行任务添加。

相关文章

  • redis 发布和订阅的php应用(异步任务处理)

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(...

  • Redis学习笔记:订阅和发布

    原文链接:Redis学习笔记:订阅和发布 一、基本使用 除了任务队列以外,redis还有一种基于“发布/订阅”模式...

  • 初识Kafka

    Kafka是由scala和java编写的一款高吞吐量分布式发布订阅消息系统。 应用场景: 异步处理 应用解耦 流量...

  • Redis实现发布订阅模式

    简述 Redis可作为消息队列中间件使用,属于发布订阅模式 消息队列可以实现【系统解耦】、【异步处理】、【流量削峰...

  • 17Generator函数的异步应用

    传统异步 回调函数 响应事件 发布/订阅 Promise Generator 异步案例 适用场景,执行a任务,暂停...

  • golang redis发布订阅 --- 2022-04-03

    Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Chann...

  • Redis高级

    Redis高级 发布订阅 Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,...

  • php使用Mosquitto扩展

    订阅a.php 发布b.php 分别运行订阅与发布文件

  • Redis监听官方版本修改

    项目业务需求用到Redis订阅发布,于是去百度订阅发布,搜索内容是springBoot 的Redis订阅发布 然而...

  • Redis发布和订阅

    1、发布和订阅是什么? 进程间的一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 2、相关命...

网友评论

    本文标题:redis 发布和订阅的php应用(异步任务处理)

    本文链接:https://www.haomeiwen.com/subject/jznvittx.html