クエリ システムがあるため、ユーザーがクエリを実行するときに、データベースにデータがない場合は、サードパーティのクエリ インターフェイスを呼び出してデータを取得し、そのデータをデータベースに挿入して、データを取得する必要があります。データベースからデータを取得してユーザーに返します。 [システムは PHP に基づいて開発されています]
複数のユーザーがクエリを実行すると、サードパーティ インターフェイスへのクエリ要求が同時に複数発生し、データ挿入が繰り返されるという問題が発生します。
この問題を解決するにはどうすればよいですか?
サードパーティのインターフェイスを呼び出すときは、Redis
を使用して、リクエストが 1 つだけサードパーティに送信されるようにします。これにより、クエリとデータの挿入が繰り返されることを回避できます。方法? ?具体的にどうすれば達成できるのでしょうか?
ありがとうございます!
ロック機構。コードが操作に入る前に、操作がロックされているかどうかを確認し、ロックされている場合は操作を中断します。それ以外の場合は、次の操作に進みます。まず、操作をロックしてからコードを実行します。コードを実行した後は、操作のロックを解除することを忘れないでください。そうしないと、実行できなくなります。
ロック コードは多数あり、上記のコードはそのうちの 1 つです。 redismcachecache ファイルを使用できます。操作の同時実行性が比較的高い場合は、上記のような redis を使用することをお勧めします。 (実際には、文字列データ型を使用してロックキー {lock} に値を割り当てます。ロックを解除すると、キーの値はクリアされるか、値 0 が割り当てられます)
リーリーリーリー
リーリー
投稿者が言及した Redis の「ロック」はもちろん実現可能です
さらに、クエリされたデータに一意の ID を設定できますか? これは二重検証です