java如何实现抢单功能

java如何实现抢单功能


至尊宝的传说
浏览 2405回答 1
1回答

江户川乱折腾

用redis也不是不可以,但效率可能有点低,建议使用乐观锁解决这个问题。举个例子:假设order表里有个version字段,该字段只能单向自增(一般就是+1),SELECT的时候把version也查出来:SELECT ..., version FROM order WHERE ...;UPDATE orderSET ...,version = version+1WHERE version = 上一个SELECT语句带出来的version值假设用户A和用户B在某时间段内先后或同时查出来order_id=1, version=1的订单,UPDATE的时候由于mysql行锁的存在,只会有一个用户UPDATE成功(1 rows affected),另一个用户则UPDATE失败(0 rows affected),然后可以根据UPDATE后返回的话行数判断用户是否抢单成功。
打开App,查看更多内容
随时随地看视频慕课网APP