事務

Redis事務分爲3個指令:

multi表示事務開始

exec表示事務執行。指令在exec之前不執行,統一緩存在服務器的一個事務隊列中,當執行exec指令後,纔開執行整個事務隊列,執行完畢後一次性返回所有指令的運行結果。

discard表示丟棄事務緩存隊列中的所有指令

 

由於Redis是單線程,這就意味着所有事務必須是串行執行,因此當前正在執行的事物也不會被其他事物打斷,因此Redis事務沒有原子性這個說法,只有隔離性,因爲是串行運行,也就不存在同一條記錄被多個事務修改,也就沒有原子性這個說法,這裏只有事務與事務之間的隔離性。

假如一個事務裏面有5條指令,如果其中一條執行失敗,其剩餘指令還會繼續執行,這裏事務與事務之間隔離,事務內部指令之間也是隔離。

這裏有個watch鎖,研究不多,只是有個規定:watch鎖禁止在multi和exec之間執行watch 指令,而必須在multi之前進行wtach關鍵變量。

發佈了167 篇原創文章 · 獲贊 10 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章