ホームページ  >  記事  >  バックエンド開発  >  スナップアップ関数を作成するときに同時実行性を考慮する方法

スナップアップ関数を作成するときに同時実行性を考慮する方法

WBOY
WBOYオリジナル
2016-08-04 09:19:141053ブラウズ

会社は急ぎ購入機能を作成したいと考えています
同時実行による過剰注文を回避するにはどうすればよいですか?
データベースがmongoなのでmysqlのようにロックが出来ません
何か良い解決策が分かりませんか?

Redisを使って強制的にキューに入れたいだけですが、これはあまりにもばかばかしい...
作成するたびにチェックしますが、その小さな同時実行性が怖い...

返信内容:

会社は急ぎ購入機能を作成したいと考えています
同時実行による過剰注文を回避するにはどうすればよいですか?
データベースがmongoなのでmysqlのようにロックが出来ません
何か良い解決策が分かりませんか?

Redisを使って強制的にキューに入れたいだけですが、これはあまりにもばかばかしい...
作成するたびにチェックしますが、その小さな同時実行性が怖い...

メッセージキューを使用するとこの問題を解決できます

まず第一に、デザイン能力が必要です。あなたのプロジェクトは、できるだけ多くの人ができるだけ多くの製品を入手できるように準備されています。次に、どのテクノロジーを使用するかを決定します。
それを取得している人が 10 人しかいない場合でも、心配する必要はありません。リレーショナル データベースを見つけるだけで完了です。
さらに追加すると、mongodb に直接圧力をかけることができます。ちなみに、mongodb はロックフリーではありません。$inc 演算子を使用して合理的に使用すれば、ロックしてそれ以上販売しないようにすることができます。例:

リーリー

これで十分でない場合は、行列に並ぶことを検討してください

このスナップアップの必要性には金融機能が含まれており、金融機能には間違いなくロック機能が必要です。

だから、もしあなたが優秀なら、独自のミドルウェアを書いてください。怠けたいなら、mysql を使ってください。

この種の売れ筋商品を保管するために特別に別のテーブルを作りました

Redis はそれを実装できるはずです。 Redis 自体はシングルスレッドであり、その操作は自然にシリアル化されるため、同時アクセスについて心配する必要はありません。もちろん、mysql を使用するのが便利です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。