摘要:基于的消息隊列實現固定庫存商品搶購商品總庫存需要在后臺寫入到庫存隊里中提前寫入獲取庫存并減一寫入隊列搶購成功售賣完畢基于上面的基礎解決購買數量存儲,超時不支付訂單取消訂單并恢復庫存商品總庫存需要在后臺寫入到庫存隊里中提前寫入
基于Redis的消息隊列實現固定庫存商品搶購
//商品總庫存需要在后臺寫入到庫存隊里中,提前寫入 $redis = new Redis(); $redis->connect("127.0.0.1",6379); $redis->auth("alloc"); $redis->select(1); //獲取庫存并減一寫入隊列 $k = $redis->lPop("sale_count"); echo $k; if($k>1){ if($k-1 == 0){ $redis->del("sale_count"); }else{ $redis->lPush("sale_count",$k-1); } echo "搶購成功!"; }else{ echo "售賣完畢!"; }基于上面的基礎解決購買數量存儲,超時不支付訂單取消訂單并恢復庫存
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); // $user_id = rand(1, 10000);//隨機模擬用戶ID 不去重復了實際情況下沒有重復的 $buy_num = rand(1, 9);//隨機模擬購買數量 //獲取庫存并減一寫入隊列 $k = $redis->lPop("sale_count"); if ($k > 1) { if ($k - $buy_num <= 0) { exit("庫存不足"); }else{ $redis->rPush("get_good_list", $user_id);//將搶到順序插入隊列,在守護進程1中處理 $redis->setex($user_id, 1800, $buy_num);//設置超時時間30分鐘 $redis->rPush("sale_count", $k - $buy_num); } echo "搶購成功!,請五分鐘內支付"; } else { echo "售賣完畢!"; }
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); //while (1){ $user_id = $redis->lPop("get_good_list"); if($user_id){ //獲取購買數量 $buy_num = $redis->get($user_id); //創建訂單 $order_no = createOder($user_id,$buy_num); //設置訂單超時時間 $redis->setex($order_no,300,1);//5分鐘未支付通知Daemon2.php } //}
connect("127.0.0.1", 6379); $redis->auth("alloc"); $redis->select(1); //不超時 $redis->setOption(Redis::OPT_READ_TIMEOUT, -1); //創建事件監聽,__keyevent@1__:expired,數字1代表數據庫序號 $redis->psubscribe(array("__keyevent@1__:expired"), "keyCallback"); // 回調函數,這里寫處理邏輯 function keyCallback($redis, $pattern, $chan, $order_no){ //獲取訂單信息 獲取購買數量 $buy_num = getOderInfo($order_no); //關閉訂單 closeOrder(); //加入庫存 $redis->rPush("sale_count",$redis->lPop("sale_count")+$buy_num); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29690.html
前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關的問題:你覺得什么是后端? 送命題。當時腦瓦特了,答曰:邏輯處理和數據增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當場被懟得體無完膚,羞愧難當。事后再反思這問題,結合資料總結了一下。發現自己學過的Re...
閱讀 2415·2021-09-01 10:41
閱讀 1440·2019-08-30 14:12
閱讀 507·2019-08-29 12:32
閱讀 2856·2019-08-29 12:25
閱讀 2934·2019-08-28 18:30
閱讀 1704·2019-08-26 11:47
閱讀 973·2019-08-26 10:35
閱讀 2588·2019-08-23 18:06