PHP+redis消息隊列搶購實現


實現功能: 1. 基於redis隊列,防止高並發的超賣 2. 基於mysql的事務加排它鎖,防止高並發的超賣

基於redis隊列工作流程: 1. 管理員根據goods表中的庫存,創建redis商品庫存隊列 2. 客戶端訪問秒殺API 3. web服務器先從redis的商品庫存隊列中查詢剩余庫存重點內容 4. redis隊列中有剩余,則在mysql中創建訂單,去庫存,搶購成功 5. redis隊列中沒有剩余,則提示庫存不足,搶購失敗重點內容

基於mysql事務和排它鎖工作流程: 1:開啟事務 2:查詢庫存,並顯示的設置寫鎖(排他鎖):SELECT * FROM goods WHERE id = 1 FOR UPDATE 3:生成訂單 4:去庫存,隱示的設置寫鎖(排他鎖):UPDATE goods SET counts = counts – 1 WHERE id = 1 5:commit,釋放鎖 注意:第二步步可以設置共享鎖,不然有可能會造成死鎖。

 

 

 

 

 

 

 


免責聲明!

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



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