成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于redis的消息隊(duì)列和鍵空間通知實(shí)現(xiàn)商品搶購和限時(shí)支付

saucxs / 2692人閱讀

摘要:基于的消息隊(duì)列實(shí)現(xiàn)固定庫存商品搶購商品總庫存需要在后臺(tái)寫入到庫存隊(duì)里中提前寫入獲取庫存并減一寫入隊(duì)列搶購成功售賣完畢基于上面的基礎(chǔ)解決購買數(shù)量存儲(chǔ),超時(shí)不支付訂單取消訂單并恢復(fù)庫存商品總庫存需要在后臺(tái)寫入到庫存隊(duì)里中提前寫入

基于Redis的消息隊(duì)列實(shí)現(xiàn)固定庫存商品搶購
//商品總庫存需要在后臺(tái)寫入到庫存隊(duì)里中,提前寫入
$redis = new Redis();
$redis->connect("127.0.0.1",6379);
$redis->auth("alloc");
$redis->select(1);
//獲取庫存并減一寫入隊(duì)列
$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 "售賣完畢!";
}
基于上面的基礎(chǔ)解決購買數(shù)量存儲(chǔ),超時(shí)不支付訂單取消訂單并恢復(fù)庫存
connect("127.0.0.1", 6379);
$redis->auth("alloc");
$redis->select(1);
//
$user_id = rand(1, 10000);//隨機(jī)模擬用戶ID 不去重復(fù)了實(shí)際情況下沒有重復(fù)的
$buy_num = rand(1, 9);//隨機(jī)模擬購買數(shù)量
//獲取庫存并減一寫入隊(duì)列
$k = $redis->lPop("sale_count");
if ($k > 1) {
    if ($k - $buy_num <= 0) {
        exit("庫存不足");
    }else{
        
        $redis->rPush("get_good_list", $user_id);//將搶到順序插入隊(duì)列,在守護(hù)進(jìn)程1中處理
        $redis->setex($user_id, 1800, $buy_num);//設(shè)置超時(shí)時(shí)間30分鐘
        $redis->rPush("sale_count", $k - $buy_num);
        
    } 
    
    echo "搶購成功!,請五分鐘內(nèi)支付";
} 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){
        //獲取購買數(shù)量
        $buy_num = $redis->get($user_id);
        //創(chuàng)建訂單
        $order_no = createOder($user_id,$buy_num);
        //設(shè)置訂單超時(shí)時(shí)間
        $redis->setex($order_no,300,1);//5分鐘未支付通知Daemon2.php

    }
//}
connect("127.0.0.1", 6379);
$redis->auth("alloc");
$redis->select(1);
//不超時(shí)
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
//創(chuàng)建事件監(jiān)聽,__keyevent@1__:expired,數(shù)字1代表數(shù)據(jù)庫序號(hào)
$redis->psubscribe(array("__keyevent@1__:expired"), "keyCallback");
// 回調(diào)函數(shù),這里寫處理邏輯
function keyCallback($redis, $pattern, $chan, $order_no){
    //獲取訂單信息 獲取購買數(shù)量
    $buy_num = getOderInfo($order_no);
    //關(guān)閉訂單
    closeOrder();
    //加入庫存
    $redis->rPush("sale_count",$redis->lPop("sale_count")+$buy_num);
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29690.html

相關(guān)文章

  • PHP面試題

    摘要:質(zhì)量高在設(shè)計(jì)時(shí),可重用現(xiàn)有的,在以前的項(xiàng)目的領(lǐng)域中已被測試過的類使系統(tǒng)滿足業(yè)務(wù)需求并具有較高的質(zhì)量。代碼塊捕獲異常,并創(chuàng)建一個(gè)包含異常信息的對象。這樣可以解決超賣的問題,但是會(huì)導(dǎo)致文件得開銷很大。 6.你們公司是使用什么框架? 答:我們公司采用的是TP框架,運(yùn)用的mysql+apache+php進(jìn)行開發(fā),因?yàn)門P框架是一個(gè)免費(fèi)開源的,輕量級(jí)的php開發(fā)框架,而且是我們中國人自己開發(fā)的,...

    ls0609 評(píng)論0 收藏0
  • 「真?全棧之路」Web前端開發(fā)后端指南

    前言 在若干次前的一場面試,面試官看我做過python爬蟲/后端 的工作,順帶問了我些后端相關(guān)的問題:你覺得什么是后端? 送命題。當(dāng)時(shí)腦瓦特了,答曰:邏輯處理和數(shù)據(jù)增刪改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 當(dāng)場被懟得體無完膚,羞愧難當(dāng)。事后再反思這問題,結(jié)合資料總結(jié)了一下。發(fā)現(xiàn)自己學(xué)過的Re...

    chuyao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<