看法:
背景:在我們使用redis的時候可能會在一些場景下使用到一些特殊的功能,但是redis現有的命令不滿足我們的需求,所以我們需要自定義一些命令,但是我們自定義命令一般是多個指令結合在一起的,所以會存在並發執行中數據被修改問題,這就要求我們的自定義命令是原子性的,排它性的,在執行這個命令的時候不允許其他腳本、命令執行。
在redis 的官方文檔中有描述lua腳本在執行的時候具有排他性,不允許其他命令或者腳本執行,類似於事務。但是存在的另一個問題是,它在執行的過程中如果一個命令報錯不會回滾已執行的命令,所以要保證lua腳本的正確性
查閱總結:
lua腳本在執行的時候不允許其他命令出入並發執行,而且他們有兩個運行的函數call()和pcall(),兩者區別在於,call在執行命令的時候如果報錯,會拋出reisd錯誤終端執行,而pcall不會中斷會記錄下來錯誤信息
