Redi中Lua指令碼拓展

2021-10-25 08:37:43 字數 1752 閱讀 5132

redis中提供了multi和exec兩個命令來使一組命令的執行能夠保證事務特性,在事務中執行的命令不會馬上執行,而是返回queued,當執行**現命令錯誤的操作時,已執行的命令不會成功。

當在某些情況下,操作某個鍵時,需要該鍵在事務過程中沒有被修改才執行成功時,通過watch命令來實現,如果事務過程中有對鍵值的修改,那麼事務不會執行,下面是兩個客戶端下事務過程中對鍵修改事務未生效的演示:

redis中實現的事務功能相對簡單,畢竟其不能實現多個執行命令之間的邏輯關係計算,從而無法實現回滾操作。

lua指令碼語言,於2023年的巴西里約熱內盧天主教大學的三人研究小組開發而成,其靈活的嵌入到應用程式中,從而為應用程式提供了靈活的擴充套件性和定製功能。

lua api

redis中執行lua指令碼的好處:

redis中對lua指令碼的管理:

evalsha sha1 numkeys key [key …] arg [ arg …],執行script load載入後的lua指令碼

script load 指令碼,載入lua指令碼返回sha1的標識字串

redis-cli script load lua指令碼或lua指令碼檔案

script exists sha1 [sha1 …],判斷乙個或多個sha1是否存在

script flush,清空redis中所有已被載入的lua指令碼

script kill,殺死當前正在執行的指令碼

需要注意的是,因為在redis中執行lua指令碼時是阻塞執行的,在redis中對lua指令碼的執行時間設定了乙個警告值:lua-time-limit,預設是5秒當執行時間超過該警告值時,其他客戶端在運算元據時就會收到錯誤提交

lua指令碼除錯

將zerobrane studio安裝或解壓,將拓展包放入其packages資料夾下

開啟zerobrane studio編輯器,進入project->lua interpreter選擇redis

如果需要輸入引數的話,進入 project-> command line parameters

之後就可以在指令碼上打斷點並進行除錯了

redis安裝與配置及php拓展redis

2 安裝redis cd redis進入目錄 make prefix usr local redis install cd usr local redis cd bin 進入bin可以看到相關命令 mkdir p usr local redis etc 啟動失敗修復 如何修復 安裝make失敗 報錯...

Unity中預覽lua指令碼

unity中選中指令碼後,右側的inspector可以看到指令碼的文字資訊,但是lua作為一種文字卻並不能被unity識別從而產生預覽效果,如圖 c 指令碼預覽效果 lua指令碼預覽效果 此時要想產生類似的效果,需要自己手動編寫 來實現,很簡單,直接上 using unityengine using...

Redis中快取Lua 指令碼

為什麼要快取 在指令碼比較長的情況下,如果每次呼叫指令碼都需要把整個指令碼傳給redis 服務端,會產生比較大的網路開銷。為了解決這個問題,redis 提供了evalsha 命令,允許開發者通過指令碼內容的sha1 摘要來執行指令碼。如何快取 redis 在執行script load 命令時會計算指...