Redis トランザクション
MULTI、EXEC、DISCARD、WATCH は Redis トランザクションの基礎です。トランザクションを明示的に開始および制御するために使用され、一連のコマンドを 1 ステップで実行できるようになります。また、次の 2 つの重要な保証が提供されます。
## ● トランザクション内のすべてのコマンドはシリアル化され、順番に実行されます。 Redis トランザクションの実行中、別のクライアントによって発行されたリクエストは発生しません。これにより、コマンド キューが単一のアトミック操作として実行されることが保証されます。 # キュー内のすべてのコマンドは処理されるか無視されます。 EXEC コマンドは、トランザクション内のすべてのコマンドの実行をトリガーします。したがって、クライアントがトランザクション コンテキストでサーバーとの接続を失うと、 ● MULTI コマンドを呼び出す前にそれが発生した場合、コマンドは実行されません。## ● EXEC コマンドを先に呼び出した場合は、すべてのコマンドが実行されます。
同時に、redis は AOF (追加専用ファイル) を使用して、追加の書き込み操作を使用してトランザクションをディスクに書き込みます。ダウンタイムやプロセスのクラッシュなどが発生した場合は、redis-check-aof ツールを使用して追加専用ファイルを修復すると、サービスが正常に起動して一部の操作を再開できるようになります。 (推奨: 「
Redis ビデオ チュートリアル 使用方法MULTI コマンドを使用して、Redis トランザクションを明示的に開始します。このコマンドは常に OK で応答します。この時点で、ユーザーは複数のコマンドを発行できますが、Redis はこれらのコマンドを実行せずにキューに入れます。 EXEC が呼び出された後、すべてのコマンドが実行されます。 DISCARD を呼び出すと、トランザクション内のコマンド キューをクリアし、トランザクションを終了できます。
次の例では、キー foo と bar をアトミックにインクリメントします。
>MULTI OK >INCR foo QUEUED >INCR bar QUEUED >EXEC 1)(整数)1 2)(整数)1
上記のコマンド実行からわかるように、EXEC は配列を返します。この配列の各要素はトランザクション内の 1 つのコマンドの戻り結果であり、その順序は、コマンドが発行されました。
Redis 接続が MULTI リクエストのコンテキストにある場合、すべてのコマンドは QUEUED という文字列で応答され (Redis プロトコルの観点からステータス応答として送信されます)、コマンド キューに入れられます。 EXEC が呼び出された場合にのみ、キューに入れられたコマンドが実行され、この時点で実際の結果が返されます。
以上がRedis トランザクションの用途は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。