欢迎光临散文网 会员登陆 & 注册

黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式

2023-02-17 16:34 作者:唏嘘不已额  | 我要投稿

P54、优惠券强杀,库存卖超问题


不使用锁的方法

将扣减库存的SQL语句调整一下,添加一个 库存量>0 的条件,如果sql没更新,就抛异常进行回滚,这种方法合适吗?

// 扣减库存
boolean update = seckillVoucherService.update()
        .setSql("stock = stock - 1").eq("voucher_id", voucherId)
        .gt("stock", 0).update();

// 未更新库存时,抛异常回滚
if(!update){ 
    throw new RuntimeException();
}


在JMeter里面做了并发测试,每秒300个线程的请求,是没有出现库存卖超问题的。


黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式的评论 (共 条)

分享到微博请遵守国家法律