まず、物事の特性のRedis
Redisのトランザクションは、一度に複数のコマンドを実行し、以下の3つの重要な保証を持つことができます。
- これは、キューバッファEXECコマンドを送信する前に、バッチ操作に置かれています。
- トランザクションの実行を入力するEXECコマンドを受信した後、トランザクション任意のコマンドの実行が失敗し、コマンドの残りの部分はまだ実行されています。
- トランザクションの実行中に、クライアントから提出された他のコマンド要求は、トランザクションの実行コマンド・シーケンスに挿入されることはありません。
トランザクションを実行するには、最初から、次の三つの段階を通過します。
- トランザクションを開始します。
- チームへのコマンド。
- 執行部。
例
以下は、トランザクションの一例であり、それは最初にある MULTI トランザクションへ、そして最後でチームに複数のコマンド、その後、トランザクションを開始 EXEC 一緒にトランザクション内のすべてのコマンドで、トランザクションのコマンドをトリガします:
Redisの127.0。0.1:6379 > MULTI OKの Redisの127.0。0.1:6379 > SETブック名" 21日間でマスタリングC ++は" QUEUED Redisの127.0。0.1:6379 > book- GET 名前を QUEUED のRedis 127.0。0.1:6379 > SADDタグ" C ++ " " プログラミング" " マスタリングシリーズ" QUEUEDの Redisの127.0。0.1:6379 > SMEMBERSタグ QUEUED Redisの127.0。0.1:6379 > EXEC 1 )OK 2)" 21日にマスタリングC ++ " 3)(整数)3 4)1)" マスターシリーズ" 2)" C ++ " 3)" プログラミング"
Redisのは、単一のコマンドを実行する原子が、Redisのトランザクションにアトミック性を維持するための任意の機構を追加することなく、これRedisのトランザクションの実装はアトミックではありません。
中間命令以前に行われた命令のロールバックの故障をもたらさないであろう、それは後続の命令が実行起こさない、トランザクションは、パッケージボリュームとしてスクリプトを実行すると理解することができるが、命令の大部分は、アトミック操作ではありません。
这是官网上的说明取引上のRedisのドキュメントから:
-それは、コマンドが失敗した場合でも、キュー内の他のすべてのコマンドが処理されることに注意することが重要です
Redisのは、コマンドの処理を停止することはありません。