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

我有一个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讲师

répondre à tous(2)
伊谢尔伦

Oui, mongodb n'a pas de transactions et ne verrouille pas les tables. Le processus depuis l'interrogation du numéro jusqu'à l'écriture n'est pas atomique, donc une concurrence élevée entraînera inévitablement des problèmes.
Il est recommandé de modifier les interfaces de données et de requête pour s'adapter à certaines opérations atomiques de mongodb pour le traitement, telles que la génération d'abord d'enveloppes rouges, puis l'utilisation de findAndModify pour interroger et modifier de manière synchrone l'état de l'enveloppe rouge lors de la saisie des enveloppes rouges.

Ty80

Utilisez findAndModify()

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal