BRPOP 是一个阻塞的列表弹出原语。 它是 RPOP 的阻塞版本,因为这个命令会在给定list无法弹出任何元素的时候阻塞连接。 该命令会按照给出的 key 顺序查看 list,并在找到的第一个非空 list 的尾部弹出一个元素。
<?php
$action = trim($_GET['action']);
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//【入列】,生产环境这个操作不可能给用户访问
if($action == "push") {
//存放所有商品编号的数组,这里的数据可以来自数据库
$goods = array(1001, 1002, 1003, 1004, 1005);
foreach($goods as $value) {
$redis->LPUSH('goods', $value);
}
echo "导入Redis队列数据成功!";
//【出列】
} else if($action == "pop") {
try {
//先进先出,采用BRPOP方法
$fetch = $redis->BRPOP('goods', 10);
//先进后出,采用BLPOP方法
//$fetch = $redis->BLPOP('goods', 10);
if(isset($fetch[1])) {
echo "您抢到的商品编号为:" . $fetch[1]. "。";
} else {
echo "商品已抢完,谢谢!";
}
} catch(Exception $e) {
//这里记录日志
}
}
?>