簡單來講,redis的事務就是將多個事務串聯起來,統一交給服務器執行,統一返回結果redis
2.若是執行階段某個命令報出了錯誤,則只有報錯的命令不會被執行,而其餘的命令都會執行,不會回滾數據庫
經過事務解決問題服務器
悲觀鎖(Pessimistic Lock), 顧名思義,就是很悲觀,每次去拿數據的時候都認爲別人會修改,因此每次在拿數據的時候都會上鎖,這樣別人想拿這個數據就會block直到它拿到鎖。傳統的關係型數據庫裏邊就用到了不少這種鎖機制,好比行鎖,表鎖等,讀鎖,寫鎖等,都是在作操做以前先上鎖spa
樂觀鎖(Optimistic Lock), 顧名思義,就是很樂觀,每次去拿數據的時候都認爲別人不會修改,因此不會上鎖,可是在更新的時候會判斷一下在此期間別人有沒有去更新這個數據,可使用版本號等機制。樂觀鎖適用於多讀的應用類型,這樣能夠提升吞吐量。Redis就是利用這種check-and-set機制實現事務的。blog
取消 WATCH 命令對全部 key 的監視。若是在執行 WATCH 命令以後, EXEC 命令或 DISCARD 命令先被執行了的話,那麼就不須要再執行 UNWATCH 了。隊列
事務中的全部命令都會序列化、按順序地執行。事務在執行的過程當中,不會被其餘客戶端發送來的命令請求所打斷。事務
隊列中的命令沒有提交以前都不會實際的被執行,由於事務提交前任何指令都不會被實際執行,也就不存在「事務內的查詢要看到事務裏的更新,在事務外查詢不能看到」這個讓人萬分頭痛的問題 序列化
Redis同一個事務中若是有一條命令執行失敗,其後的命令仍然會被執行,沒有回滾請求