Redis 5トランザクションとWatch
3086 ワード
トランザクションの原理は、トランザクションに属するコマンドをRedisに送信してから、Redisにコマンドを順次実行させることです.
エラー処理
exec完了
コマンドの実行エラーが発生した場合、後続のコマンドは実行されませんが、前の文はすべて実行されます.しかしredisはロールバック機能を提供しておらず、すべての腐った屋台は開発者が処理しなければならない.
Watch
1つのキーの値++が必要な場合、実行時に他のクライアントがこの値を変更します.
トランザクションを実行するときに変数が変更されたかどうかをリスニングし、トランザクションが変更された場合はキャンセルします.
この変数をリスニングし終わったら、トランザクションで変更しない限りキャンセルします.
execを実行すると、すべてのキーの監視が解除されます.
ウォッチが傍受するキーが期限切れになったので、キーが変更されたとは思いません.
!!!
127.0.0.1:6379> multi
OK
127.0.0.1:6379> zadd result 123 php
QUEUED
127.0.0.1:6379> zadd result 11 php
QUEUED
127.0.0.1:6379> exec
1) (integer) 0
2) (integer) 0
Redis , 。
EXEC , Redis , 。
EXEC , , , Redis
エラー処理
exec完了
コマンドの実行エラーが発生した場合、後続のコマンドは実行されませんが、前の文はすべて実行されます.しかしredisはロールバック機能を提供しておらず、すべての腐った屋台は開発者が処理しなければならない.
Watch
1つのキーの値++が必要な場合、実行時に他のクライアントがこの値を変更します.
トランザクションを実行するときに変数が変更されたかどうかをリスニングし、トランザクションが変更された場合はキャンセルします.
この変数をリスニングし終わったら、トランザクションで変更しない限りキャンセルします.
execを実行すると、すべてのキーの監視が解除されます.
ウォッチが傍受するキーが期限切れになったので、キーが変更されたとは思いません.
127.0.0.1:6379> set count 1
OK
127.0.0.1:6379> watch count
OK
127.0.0.1:6379> set count 2
QUEUED
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set count 3
QUEUED
127.0.0.1:6379> exec
(nil)
!!!