PHP调用redis消息队列案例

一、代码实例:
//需要成功引入并使用redis
$redis = RedisManager::$redis;

// 生产者:将订单加入队列(右端插入)
function producer($orderId,$redis) {
$redis->rPush('task_queue', $orderId);
print_r("<br/>追加入列<br/>");
print_r($orderId);
}

// 测试:生产 3 个订单
for ($i = 0; $i < 3; $i++) {
$orderData = ['id' => $i, 'product' => 'iPhone_'.$i];
producer(json_encode($orderData),$redis);
}



// 消费者:从队列左端取出订单处理
function consumer($redis) {

print_r("<br/>队列总长度<br/>");
print_r($redis->lRange('task_queue', 0, -1)); // 获取整个队列);

while (true) {
// 非阻塞出队(队列为空时返回 false)
$order = $redis->lPop('task_queue');
if ($order === false) {
break;
}
print_r("<br/>排队出列<br/>");
print_r(json_decode($order,true));

print_r("<br/>队列还剩多少<br/>");
print_r($redis->lRange('task_queue', 0, -1)); // 获取整个队列);

}
}

// 执行消费者
consumer($redis);

二、浏览器输出结果案例:

 

posted @ 2025-03-06 18:07  幽暗天琴  阅读(52)  评论(0)    收藏  举报