public function kill() { //假裝是用戶的唯一標識 $uuid = md5(uniqid('user') . time()); $orderKey = "2020_03_31_user_list";//訂單隊列 $listKey = '2020_03_31_goods_list';//剩余商品隊列 $failUserNum = "2020_03_31_fail_user_num";//失敗人數 $successUserNum = "2020_03_31_success_user_list";//成功用戶隊列 $r = doWithRedis(function (Redis $redis) use ($listKey, $orderKey, $failUserNum, $successUserNum, $uuid) { if ($goodsId = $redis->lPop($listKey)) {//秒殺成功 //生成訂單 //庫存減一 //判斷用戶是否意在成功隊列 if ($redis->zRank($successUserNum, $goodsId, $uuid)) {//已經在成功隊列 return '已經在購買隊列'; } else {////將幸運用戶存在集合中 $redis->zAdd($successUserNum, $goodsId, $uuid); } $redis->hSet($orderKey, $goodsId, $uuid); } else { //秒殺失敗 //將失敗用戶計數 $redis->incr($failUserNum); } }); echo "SUCCESS"; return $r; }