1. 概要:
他の多くのデータベースと同様、NoSQL データベースとしての Redis もトランザクション メカニズムを提供します。 Redis では、MULTI/EXEC/DISCARD/WATCH の 4 つのコマンドがトランザクション実装の基礎となります。この概念は、リレーショナル データベース開発の経験を持つ開発者にとってはなじみのないものではないと思いますが、それでも、Redis でのトランザクションの実装特性を簡単にリストします: (推奨: redis ビデオ チュートリアル )
1 ). トランザクション内のすべてのコマンドはシリアル順序で実行されます。トランザクションの実行中、Redis は他のクライアント リクエストにサービスを提供しなくなるため、トランザクション内のすべてのコマンドがアトミックに実行されます。
2). リレーショナル データベースのトランザクションと比較すると、Redis トランザクションではコマンドの実行が失敗しても、後続のコマンドは引き続き実行されます。
3). MULTI コマンドを通じてトランザクションを開始できますが、これはリレーショナル データベース開発の経験がある人であれば「BEGIN TRANSACTION」ステートメントとして理解できます。このステートメントの後に実行されるコマンドはトランザクション内の操作とみなされ、最後に EXEC/DISCARD コマンドを実行することで、トランザクション内のすべての操作をコミット/ロールバックできます。これら 2 つの Redis コマンドは、リレーショナル データベースの COMMIT/ROLLBACK ステートメントと同等であるとみなすことができます。
4). トランザクションが開始される前に、クライアントとサーバー間の通信障害が発生し、ネットワークが切断された場合、実行される後続のすべてのステートメントはサーバーによって実行されません。ただし、クライアントが EXEC コマンドを実行した後にネットワーク中断イベントが発生した場合、トランザクション内のすべてのコマンドがサーバーによって実行されます。
5).追加専用モードを使用する場合、Redis はシステム関数 write を呼び出すことにより、この呼び出しでトランザクション内のすべての書き込み操作をディスクに書き込みます。ただし、電源障害によるダウンタイムなど、書き込みプロセス中にシステム クラッシュが発生した場合、その時点ではデータの一部だけがディスクに書き込まれ、データの他の部分が失われる可能性があります。
Redis サーバーは、再起動時に必要な一連の整合性チェックを実行します。同様の問題が見つかると、ただちに終了し、対応するエラー プロンプトが表示されます。現時点では、Redis ツールキットで提供されている redis-check-aof ツールを最大限に活用する必要があります。このツールは、データの不整合エラーを特定し、書き込まれたデータの一部をロールバックするのに役立ちます。修復後、Redis サーバーを再度再起動できます。
2. 関連コマンドのリスト:
コマンド プロトタイプ | 時間計算量 | コマンドの説明 | 戻り値 |
M U L T I |
はトランザクションの開始をマークするために使用されます。それ以降に実行されるコマンドはすべてコマンド キューに保存されます。これらのコマンドは、EXEC が実行されるまでアトミックには実行されません。 | 常に OK | |
E XX E C | ## を返しますトランザクション内の各コマンドの結果をアトミックに返します。トランザクションで WATCH が使用されている場合、トランザクションが放棄されると、EXEC は NULL-multi-bulk 応答を返します。 | ||
I S C A R D |
トランザクション キュー内のすべてのコマンドをロールバックし、同時に現在の接続のステータスを通常の状態、つまり非トランザクション状態に戻します。 WATCH コマンドを使用すると、このコマンドはすべてのキーの監視を解除します。 | 常に OK を返します。 | |
#WATCHkey [key ...] | O(1)MULTI コマンドを実行する前に、監視するキーを指定できますが、EXEC を実行する前に監視対象のキーが変更された場合、EXEC はトランザクション キュー内のすべてのコマンドの実行を中止します。 | 常に OK を返します。 | |
N W A T C H O(1) |
現在のトランザクションで指定された監視対象キーをキャンセルします。EXEC または DISCARD コマンドが実行される場合、手動で行う必要はありません。この後、トランザクション内のすべての監視対象キーが自動的にキャンセルされるため、コマンドを実行します。 | 常に OK を返します。 |
以上がRedis トランザクションと関連コマンドの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。