队列 - java redis做app后台 怎么实现多人抢单
阿神
阿神 2017-04-18 10:03:55
0
1
511
阿神
阿神

闭关修行中......

Antworte allen(1)
小葫芦

没太看懂你的代码表达的意思,感觉跟你的描述不太相符。

用redis也不是不可以,但效率可能有点低,建议使用乐观锁解决这个问题。

举个例子:
假设order表里有个version字段,该字段只能单向自增(一般就是+1),SELECT的时候把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后返回的话行数判断用户是否抢单成功。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!