redis:トランザクション管理(九)

1638 ワード

redis          
    :    、    、    

オープントランザクション:multi実行トランザクション:exec
127.0.0.1:6379> multi  #    
OK
127.0.0.1:6379> set name applesnt #    
QUEUED
127.0.0.1:6379> set age 12 #    
QUEUED
127.0.0.1:6379> get name #    
QUEUED
127.0.0.1:6379> exec #         
1) OK
2) OK
3) "applesnt"

トランザクションのキャンセル:discard
127.0.0.1:6379> multi #    
OK
127.0.0.1:6379> set name applesnt #    
QUEUED
127.0.0.1:6379> discard  #    
OK
127.0.0.1:6379> get name #          
(nil)

トランザクション(コンパイル時トランザクション):1つのトランザクションでコマンドが間違っているとトランザクション全体が実行されません.
12127.0.0.1:6379> multi
OK
127.0.0.1:6379> set name applesnt #set  name
QUEUED
127.0.0.1:6379> getset name #  getset        
(error) ERR wrong number of arguments for 'getset' command
127.0.0.1:6379> set age 12 #  set  age
QUEUED
127.0.0.1:6379> get name #  name  
QUEUED
127.0.0.1:6379> exec #      
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> get name #        
(nil)

≪トランザクション(ランタイム・トランザクション)|Transactions(Runtime Transactions)|oem_src≫:1つのトランザクションのうち1つがエラーを実行し、他の正しい実行が成功します.
127.0.0.1:6379> multi 
OK
127.0.0.1:6379> set count "v1" 
QUEUED
127.0.0.1:6379> incr count #     1       
QUEUED
127.0.0.1:6379> set name applesnt
QUEUED
127.0.0.1:6379> get name
QUEUED
127.0.0.1:6379> exec #           
1) OK
2) (error) ERR value is not an integer or out of range
3) OK
4) "applesnt"
127.0.0.1:6379> get count
"v1"