場景
Centos中Redis的下載編譯與安裝(超詳細):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334
Redis的啟動和關閉(前台啟動和后台啟動):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103972348
RedisDesktopManager客戶端可視化工具下載安裝與使用:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103983147
通過以上教程將Redis的環境搭建起來后,實現Redis的事務流程。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
正常事務流程
帶回滾的事務流程
事務執行exec之前,入隊命令錯誤(語法錯誤;嚴重錯誤導致服務器不能正常工作),放棄事務
步驟:
multi正常命令
setkeyvalue正常命令
incr命令語法錯誤
exec無法執行事務,第一條正確的命令也不會執行。
事務執行exec命令后,執行隊列命令,命令執行錯誤,事務提交
步驟:
multi正常命令
set username badao 正常命令
lpop username 正常命令,語法沒有錯誤,執行命令時才會有錯誤。
exec正常執行,發現錯誤可以在事務提交前放棄事務, 執行discard
結論:
在exec執行后所產生的錯誤中,即使事務中有某個/某些命令在執行時產生了錯誤,事務中的其他命令仍然會
繼續執行。Redis在事務失敗時不進行回滾,而是繼續執行余下的命令。
Redis的這種設計原則是:Redis命令只會因為錯誤的語法而失敗(這些問題不能在入隊時發現),或是命令用在了錯誤類型的鍵上面
失敗的命令不是Redis所致,而是由編程錯誤造成的,這樣錯誤應該在開發的過程中被發現,生產環境中不應出現的錯誤。
就是在程序的運行環境中不應該出現語法的錯誤。而Redis能夠保證正確的命令一定會被執行。