黑馬程序員Redis入門到實戰(zhàn)教程,深度透析redis底層原理+redis分布式

P54、優(yōu)惠券強殺,庫存賣超問題
不使用鎖的方法
將扣減庫存的SQL語句調(diào)整一下,添加一個 庫存量>0 的條件,如果sql沒更新,就拋異常進行回滾,這種方法合適嗎?
// 扣減庫存 boolean update = seckillVoucherService.update() .setSql("stock = stock - 1").eq("voucher_id", voucherId) .gt("stock", 0).update(); // 未更新庫存時,拋異?;貪L if(!update){ throw new RuntimeException(); }
在JMeter里面做了并發(fā)測試,每秒300個線程的請求,是沒有出現(xiàn)庫存賣超問題的。
標(biāo)簽: