php redis消息队列及频道订阅

redis 的消息队列常用于秒杀,高并发的处理。
处理逻辑为先把操作写入 redis 队列,再在后台运行一个守护进程的程序,依次处理消息队列的操作。

1
2
3
4
5
6
7
// 入队,rpush将一个或多个值 value 插入到列表 key 的表尾(最右边)。
foreach($arr as $k=>$v){
$redis->rpush("myList",$v);
}

// 出队,lpop移除并返回列表 key 的头元素
$value = $redis->lpop('myList');

redis 频道订阅常用于消息的订阅发布,消息推送
处理逻辑为先把需要推送的消息写入频道 key 中,客户端运行一个守护进程的程序,接收订阅频道推送消息

1
2
3
4
5
6
7
// 将信息 message 发送到指定的频道 channel
Redis::PUBLISH($cacheKey, json_encode($redisData));

// 监听Redis的队列消息
while($res = Redis::BLPOP($key)) {
doJob($res);
}