Redis事務中幾種常見的場景-exec執行前后的語法錯誤時的處理


場景

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能夠保證正確的命令一定會被執行。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM