84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
我有一个product表数据, 它会产生10个coupon, 我在product表的字段里存了coupon_count的字段为10, 如果抢红包的话根据coupon_count的剩余数来生成红包(抢红包coupon_count 减一)。
当1秒内并发上百的话, 会因为多个进程并发写入问题产生超过总是得红包。有什么方案可以解决这个问题?
web框架: flask
数据库: mongodb 3.2.6
使用orm框架: mongoengine
认证高级PHP讲师
会,mongodb没有事务,不会锁表,在你查询数量到写入的过程并非原子性的,所以高并发必然出问题。建议修改数据和查询接口,去适配一些mongodb的原子性操作来处理,比如先生成红包,抢红包时用findAndModify来查询并同步修改红包状态。
使用 findAndModify()
会,mongodb没有事务,不会锁表,在你查询数量到写入的过程并非原子性的,所以高并发必然出问题。
建议修改数据和查询接口,去适配一些mongodb的原子性操作来处理,比如先生成红包,抢红包时用findAndModify来查询并同步修改红包状态。
使用 findAndModify()