有時候咱們爲了同時操做多種數據結構,須要屢次調用命令在同一時刻。Redis有五種命令能夠讓咱們不間斷的操做多種keys: WATCH
,MULTI
,EXEC
,UNWATCH
和DISCARD
數據庫
在Redis中,一個基本事務包括MULTI
和EXEC
,意思是提供給客戶端執行多個命令A,B,C,...的功能,其餘客戶端不能打斷。這個和關係型數據庫的能夠部分執行,而後回滾或遞交的事務不一樣。在Redis中,每一個做爲一個基本的MULTI
/EXEC
事務的一部分傳遞的命令,都將一個執行完執行下一個。在它們都執行完畢後,其客戶端才能夠執行本身的命令。數據結構
當看到MULTI
,Redis將會從相同的鏈接組建命令隊列,直到它看到一個EXEC
,纔會不中斷的執行整個命令隊列。在語義上,Python類庫處理事務使用一個叫pipeline
的方法。在鏈接對象上調用pipeline()
方法將會建立一個事務,正確的話將會自動使用MULTI
和EXEC
包裝一個命令隊列。Python Redis客戶端也會存儲命令,直到咱們真正須要發送的時候才發送。這會減小Redis和客戶端的交互次數,提升性能。性能
沒有事務的話,每一個線程均可以同時訪問並修改數據庫,下面的例子將展現範例。spa