Redisの戦闘-Redis総務

開始から実行にRedisのトランザクションは、次の3つの段階を通って行きます。

  • トランザクションを開始
  • チームへのコマンド
  • 執行部

1. MULTI取引開始
2は、キューバッファEXECコマンドを送信する前に、バッチ操作に置かれています。
トランザクションの実行を入力するレシートEXECコマンド時3、取引任意のコマンドの実行が失敗し、コマンドの残りの部分は、まだトランザクションの実行中に実行されている、クライアントから提出された他のコマンド要求は、トランザクションの実行コマンド・シーケンスに挿入されることはありません。

Redisの取引は、通常のコマンドを使用しました:

コマンド 例を挙げて説明し、
MULTI これは、ブロック取引の開始をマーク
EXEC すべてのトランザクションのブロック内のコマンドを実行します
DISCARD トランザクションブロック内のすべてのコマンドをあきらめ、取引をキャンセル
[...キー]キーを見て 他の注文には、この(またはこれらの)キーの変更は、トランザクションの前に実行されている場合は、モニタ(またはそれ以上)のキーは、そのトランザクションが中断されます
UNWATCH すべてのキーを監視するために、WATCHコマンドをキャンセル

例:

#使用multi标记一个事务的开始
127.0.0.1:6379> multi
OK
#设置一个key-value
127.0.0.1:6379> set key1 SUNDAY
QUEUED
127.0.0.1:6379> set key2 XI~AN
QUEUED
127.0.0.1:6379> set key3 PLAY
QUEUED
#执行当前事务
127.0.0.1:6379> exec
1) OK
2) OK
3) OK
#查看刚才插入的键值
127.0.0.1:6379> get key1
"SUNDAY"
127.0.0.1:6379> get key2
"XI~AN"
127.0.0.1:6379> get key3
"PLAY"
127.0.0.1:6379>

同時に、あなたもただのRedisに挿入されたデータを表示する可視化ツールのRedis RedisのDesktop Managerのツールを使用することができます。

16750882-aee3dac2c49e63b1.png
image.png

次のセクションでは、Redisのデスクトップマネージャのインストールと使用について説明し

コマンドの使用を破棄

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 1
QUEUED
127.0.0.1:6379> set b 2
QUEUED
127.0.0.1:6379> set c 3
QUEUED
# 取消事务,放弃执行事务块内的所有命令
127.0.0.1:6379> DISCARD
OK
127.0.0.1:6379>

WATCHとUNWATCHは、
2つのコマンドのトランザクションをオンにする前に、時計はキーが他のコマンドで変更を監視されている動的なキーを監視することができ、現在のトランザクションは、unwatchキャンセルモニタオブジェクトを終了します。

# 监听上述key1的值
127.0.0.1:6379> watch key1
OK
# 查看当前key1的值
127.0.0.1:6379> get key1
"wednesday"
# 修改key1的值为a
127.0.0.1:6379> set key1 a
OK
# 开始事务
127.0.0.1:6379> multi
OK
# 在事务中修改key1的值为2
127.0.0.1:6379> set key1 2
QUEUED
#执行事务,发现执行失败
127.0.0.1:6379> exec
(nil)
# 获取key1的值,发现还是在开启事务之前的a
127.0.0.1:6379> get key1
"a"
127.0.0.1:6379>

トランザクションが実行されません後WATCHコマンドは、1つ以上のキー、キーが変更された(または削除)された一回そのうちの一つを監視することができます。モニタリングはUNWATCHを使用して監視をキャンセルすることができますが、ここではそれらを繰り返すことはしません(transactionコマンドのみEXEC後に実行され、EXECコマンドの後にキーWATCH監視を変更することが可能である)EXECコマンドまで続きました。

Redisのは、トランザクション内のすべてのコマンドは、いずれかの実行実行したりしていないことを確認します。クライアントが切断送信する前にEXECコマンドは、Redisのは、トランザクションキューをクリアする場合は、トランザクション内のすべてのコマンドが実行されません。クライアントは、EXECコマンドを送信すると、コマンドのすべては、クライアントがその後切断しても、実行されますRedisのコマンドを実行するすべてのために記録されているので、問題ではありません。また、Redisのトランザクションは、他のコマンドの中に挿入されることなく、トランザクションを実行するためにコマンドを確保することができます。クライアントAは、いくつかのコマンドを実行する必要があり、クライアントBがトランザクションを使用せずにコマンドを送信想像し、クライアント・コマンド・Bは、いくつかのクライアントコマンドの実行中に挿入することができます。あなたはこれが起こることをしたくない場合は、トランザクションを使用することができます。

ゼロから始めることを恐れていない、私は行くことはありません怖いです!

参考文献:
ルーキーチュートリアル:https://www.runoob.com/redis/redis-keys.html
「Redisの本当の」ジョサイア・L.カールソン

おすすめ

転載: blog.csdn.net/weixin_34059951/article/details/90999394