利用樂觀鎖及redis解決電商秒殺高並發基本邏輯


解決秒殺高並發問題方法很多,如悲觀鎖,消息隊列等……

利用樂觀鎖及redis解決秒殺高並發基本邏輯

//初始化redis

$redis = new Redis();

// 設置鍵值,起到監視作用  執行事務之前,判斷被修改,回滾

$redis->watch('sales');

// 獲取銷量

$sales = $redis->get('sales');

// 如果銷量存在,先刪除,false

// $redis->del('sales');

// 庫存,秒殺兩件產品

$store = 2;

// 判斷銷量是否大於等於庫存

if($sales >= $store){
    // 結束
    exit('活動結束');
}

// 事務塊內多條命令會按先后順序放入一個隊列中,最后有EXEC命令原子性的執行

//redis開啟事務

$reids->multi();

// 更新銷量

$redis->set('sales', $sales+1);

$res = $redis->exec();

// 記錄到redis里面,用守護進程 swoole多進程去執行 !!!

if($res){
    // 減庫存冀其他操作
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM