python - mongodb 高并发写入 覆盖原有数据
PHP中文网
PHP中文网 2017-04-17 17:41:24
0
2
369

我有一个product表数据, 它会产生10个coupon, 我在product表的字段里存了coupon_count的字段为10, 如果抢红包的话根据coupon_count的剩余数来生成红包(抢红包coupon_count 减一)。

当1秒内并发上百的话, 会因为多个进程并发写入问题产生超过总是得红包。有什么方案可以解决这个问题?

  1. web框架: flask

  2. 数据库: mongodb 3.2.6

  3. 使用orm框架: mongoengine

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
伊谢尔伦

會,mongodb沒有事務,不會鎖表,在你查詢數量到寫入的過程並非原子性的,所以高並發必然出問題。
建議修改資料和查詢接口,去適配一些mongodb的原子性操作來處理,例如先生成紅包,搶紅包時用findAndModify來查詢並同步修改紅包狀態。

Ty80

使用 findAndModify()

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!