一、代码实例:
//需要成功引入并使用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);
二、浏览器输出结果案例: