redis的Lua腳本事務注意


雖然lua腳本的執行具有原子性,但是如果一個腳本存在錯誤,那么可能不會回滾。因為redis中的事務和我們理解的數據庫中的事務不太一樣。

redis事務中的錯誤

在事務期間可能會遇到兩種命令錯誤:

  • (1)命令可能無法排隊,因此在調用EXEC之前可能會出現錯誤。例如,命令可能在語法上是錯誤的(參數數量錯誤,命令名稱錯誤,...),或者可能存在一些關鍵情況,例如內存不足情況(如果服務器被配置為使用maxmemory指令具有內存限制))。
  • (2)調用EXEC后, 命令可能會失敗,例如,因為我們對具有錯誤值的鍵執行了操作(例如對字符串值調用列表操作)

第一種錯誤顯然整個事務不會執行,因為語法出現了錯誤。

第二種錯誤是,語法沒錯,但是命令有問題,比如你要set一個不存在的key。這種,同一個腳本中的錯誤的命令不會執行,但是其他正確腳本會繼續執行。所以使用Lua腳本,必須保證語句語法和命令都是對的,否則可能達不到預期(要么全執行,要么全不執行)


免責聲明!

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



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