84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
闭关修行中......
没太看懂你的代码表达的意思,感觉跟你的描述不太相符。
用redis也不是不可以,但效率可能有点低,建议使用乐观锁解决这个问题。
举个例子:假设order表里有个version字段,该字段只能单向自增(一般就是+1),SELECT的时候把version也查出来:
version
SELECT ..., version FROM order WHERE ...; UPDATE order SET ..., version = version+1 WHERE version = 上一个SELECT语句带出来的version值
假设用户A和用户B在某时间段内先后或同时查出来order_id=1, version=1的订单,UPDATE的时候由于mysql行锁的存在,只会有一个用户UPDATE成功(1 rows affected),另一个用户则UPDATE失败(0 rows affected),然后可以根据UPDATE后返回的话行数判断用户是否抢单成功。
没太看懂你的代码表达的意思,感觉跟你的描述不太相符。
用redis也不是不可以,但效率可能有点低,建议使用乐观锁解决这个问题。
举个例子:
假设order表里有个version字段,该字段只能单向自增(一般就是+1),SELECT的时候把
version
也查出来:假设用户A和用户B在某时间段内先后或同时查出来order_id=1, version=1的订单,UPDATE的时候由于mysql行锁的存在,只会有一个用户UPDATE成功(1 rows affected),另一个用户则UPDATE失败(0 rows affected),然后可以根据UPDATE后返回的话行数判断用户是否抢单成功。