Redisベース(2)——ものごと

1932 ワード

Redis事物
redisの中の物事(transaction)はコマンドのセットです.物事と命令はredisの最小実行単位である.一つの物事の命令はすべて実行されるか、実行されないかのいずれかです.物事の応用の最も一般的な例は振り替えで、Aは帳簿を出して、Bは帳簿に入って、すべて実行するか、すべて実行されません.
事物の原理は,まず一つの事物に属する命令をredisに送信し,その後redisにこれらの命令を順次実行させることである.
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SADD setA -1 0
QUEUED
127.0.0.1:6379> SADD setB 5 6
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 2
2) (integer) 2
127.0.0.1:6379> SMEMBERS  setA
1) "-1"
2) "0"
3) "1"
4) "2"
5) "3"
127.0.0.1:6379> SMEMBERS setB
1) "2"
2) "3"
3) "4"
4) "5"
5) "6"

まず、MULTIコマンドを使用してredisに、次のコマンドが同じものであることを伝えます.redisは、これらのコマンドを一時的にキャッシュし、OKを返します.次にコマンドを入力すると、redisはQUEUEに戻って、コマンドをキャッシュキューに入れたことを示します.実行するすべてのコマンドをredisに送信した後、EXECコマンドを使用して、実行待ちのキュー内のすべてのコマンドを順番に実行するようにRedisに伝えます.
Redisは、トランザクションがすべて実行されるか、実行されないかを保証します.EXECコマンドを送信する前にクライアントが断線した場合、Redisは物事のキューを空にし、トランザクション内のすべてのコマンドは実行されません.Redisはまた、トランザクション内のコマンドが他のコマンドに挿入されずに順次実行されることを保証します.
エラー処理
構文エラー
構文エラーとは、コマンドエラーまたはコマンドが存在しないことを意味します.
文法エラーがあるコマンドが1つあれば、EXECコマンドを実行するとRedisはそのままエラーを返し、正しいコマンドも実行されません.
実行エラー
実行エラーとは、ハッシュ・タイプのコマンドを使用してセット・タイプのkeyを操作するなど、コマンド実行時に発生するエラーを指します.このような誤りは実際に実行されるまでredisは発見されないので,物事の中でこのような命令はredisに受け入れられ実行される.
トランザクションにコマンドがエラーが発生した場合、トランザクション内の他のコマンドは依然として実行されます(エラーコマンドの後のコマンドも含まれます).
++redisのトランザクションは、データベースが提供するrollback機能に関係しません.そのため、エラーを回避する必要があります.++
WATCHコマンド紹介
WATCHコマンドは、1つまたは複数のキーを監視し、1つのキーが変更(または削除)されると、その後のトランザクションは実行されません.
127.0.0.1:6379> watch key
OK
127.0.0.1:6379> set key 2
OK
127.0.0.1:6379> set hi 3
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set hi 2 //     
QUEUED
127.0.0.1:6379> set key 3  //     
QUEUED
127.0.0.1:6379> set hi 4  //      
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get key
"2"
127.0.0.1:6379> get hi
"3"