为了账号安全,请及时绑定邮箱和手机立即绑定

java如何实现抢单功能

java如何实现抢单功能

至尊宝的传说 2018-07-30 05:05:57
java如何实现抢单功能
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

用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后返回的话行数判断用户是否抢单成功。

查看完整回答
反对 回复 2018-08-26
  • 1 回答
  • 0 关注
  • 2404 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信