Redisの総務導入します
Redisのトランザクションは、一度に複数のコマンドを実行し、以下の3つの重要な保証を持つことができます。
- これは、キューバッファEXECコマンドを送信する前に、バッチ操作に置かれています。
- トランザクションの実行を入力するEXECコマンドを受信した後、トランザクション任意のコマンドの実行が失敗し、コマンドの残りの部分はまだ実行されています。
- トランザクションの実行中に、クライアントから提出された他のコマンド要求は、トランザクションの実行コマンド・シーケンスに挿入されることはありません。
トランザクションを実行するには、最初から、次の三つの段階を通過します。
- トランザクションを開始します。
- チームへのコマンド。
- 執行部。
例
以下は、トランザクションの一例であり、それは最初にある MULTI トランザクションへ、そして最後でチームに複数のコマンド、その後、トランザクションを開始 EXEC 一緒にトランザクション内のすべてのコマンドで、トランザクションのコマンドをトリガします:
1 127.0。0.1:6379 > MULTI 2 OK 3 127.0。0.1:6379 > SETブック名" 21日間でマスタリングC ++ " 4は、 QUEUED 5 127.0を。0.1:6379 > book- GET 名 6を QUEUED 7 127.0を。0.1:6379 > SADDタグ" C ++ " " プログラミング" " マスターシリーズ" 8 QUEUED 9 127.0。0.1:6379 > タグSMEMBERS 10は QUEUED 11 127.0を。0.1:6379 > EXEC 12 1 )OK 13 2)" 21日にマスタリングC ++ " 14 3)(整数)3 15 4)1)" マスターシリーズ" 16 2)" プログラミング" 17 3)" C ++ "
、単一のコマンドのRedisの実行は、アトミックであるが、トランザクション内のアトミック性を維持するための任意のRedisの機構を追加することなく、トランザクションはRedisの原子を行いません。
トランザクションは、パッケージボリュームとしてスクリプトを実行すると理解することができるが、命令の大部分は、アトミック操作ではない、命令の故障中央(例外は、Java 1/0を実行に似ている)以前に行わロールバック命令をもたらしません、また、後続の命令が発生することはありません。
これは、からON公式オンライン記述Redisのドキュメントです 取引:
Redisのは、コマンドの処理を停止しません - それは、コマンドが失敗した場合でも、キュー内の他のすべてのコマンドが処理されることに注意することが重要です。
例えば:
1 127.0。0.1:6379 > 多 2 OK 3 127.0。0.1:6379は、 > 設定AAA 4 QUEUED 5 127.0を。0.1:6379 > INCR 6 QUEUED 7 127.0。0.1:6379 > セットBのBBB 8 QUEUED 9 127.0を。0.1:6379 > EXEC 10 1 )OK 11 2)(エラー)ERR値である整数か外範囲の 12 3 OK) 13 127.0。0.1:6379 > 取得14 "のAAA " 15 127.0を。0.1:6379 > 取得B 16 " BBBを"
それは場所のincrに失敗した場合、成功を設定し、ロールバックされなかったであろう、セットBは続行されます。
トランザクションキュー内のコマンドエラーがある場合、Bは、(Javaコンパイラのエラーに類似)、その後、EXECコマンドは、すべてのコマンドは実行されません
1 127.0。0.1:6379 > 多 2 OK 3 127.0。0.1:6379は、 > 設定AAA 4 QUEUED 5 127.0を。0.1:6379 > 敷石BはBBB 6 (エラー)引数が始まると、未知のコマンド`sett`メッセージ: 'B'、 'bbb`、 7 127.0。0.1:6379 > 設定のC CCC 8は QUEUED 9 127.0を。0.1:6379> execの 10 (エラー)EXECABORTトランザクションがあるため、以前のエラーのため廃棄されました。 11 127.0。0.1:6379 > 取得12(NIL)を
Redisのトランザクションコマンド
1は、Redisの廃棄コマンドはトランザクションブロック内のすべてのコマンドをあきらめ、取引をキャンセルするために使用されます。
構文:DISCARD
1つの Redisの127.0。0.1:6379 > MULTI 2 OK 3 Redisの127.0。0.1:6379 > PING 4は QUEUED 5つの Redisの127.0を。0.1:6379 > SET挨拶" ハロー" 6は QUEUED 7つの Redisの127.0を。0.1:6379 > DISCARD 8 OK
2、RedisのExecは、コマンドブロック内のすべてのトランザクションを実行するためのコマンド。
構文:Execの
使用例として、
3は、Redisのマルチコマンドがブロックトランザクションの開始をマークするために使用されます。
アトミックEXECコマンド(アトミック)によって最終的にキューに入れ、そしてれる順序に基づいて、ブロックトランザクション内の複数のコマンドが実行されます。
構文:マルチ
使用例として、
4、RedisのUnwatchは、すべてのキーを監視するために、WATCHコマンドを削除するには、コマンド。
構文:unwatch
1 127.0。0.1:6379 > WATCH ロックlock_timesを 2 OK 3 127.0を。0.1:6379 > UNWATCH 4 OK
5、Redisのウォッチは、この(またはこれらの)追加のコマンドキーを実行する前に、トランザクションが変更された場合は、コマンドを監視(またはそれ以上)のキーのために、トランザクションは中断されます
構文:WATCHキー[ キー...]
1 127.0。0.1:6379は、 >時計ロックlock_times 2 OKを