Lua指令碼如何呼叫Redis指令

2021-10-09 16:52:34 字數 742 閱讀 5094

當我們在redis中允許lua指令碼,有乙個內建變數,並且具備兩個引數:

- redis.call("命令名稱",引數1,引數2...)  :執行指定的redis指令,執行遇到錯誤會直接返回錯誤

- redis.pcall("命令名稱",引數1,引數2) :執行指定的redis指令,執行遇到錯誤以lua表的形式返回。

還記得redis中eval命令嗎?

eval script numbers key [key ...] arg [arg...]
eval執行指令碼可以接受兩個引數,key和arg,並且會內建變數(陣列格式)來接收使用者傳入的key和arg引數:

keys:用來存放key引數

ar**:用來存放key以外的引數

我們在指令碼中,可以從陣列中根據下標(lua中的陣列下標從1開始),取出使用者傳入的key和arg引數

redis.call("set",keys[1],ar**[1]);
而後,我們在指令碼中可以動態指定key以及需要存放value的值:

Lua指令碼如何呼叫Redis指令

當我們在redis中允許lua指令碼,有乙個內建變數,並且具備兩個引數 redis call 命令名稱 引數1 引數2.執行指定的redis指令,執行遇到錯誤會直接返回錯誤 redis pcall 命令名稱 引數1 引數2 執行指定的redis指令,執行遇到錯誤以lua表的形式返回。還記得redis...

redis呼叫lua指令碼

在redis中很多基本操作都是原子操作 但是缺少事務的概念,所幸的是redis支援lua指令碼,可以利用lua指令碼實現事務特性 執行比 較對應key值大小,更新較大值 的lua指令碼 param key param time return public object updatehigherint...

golang呼叫lua指令碼

import github.com aarzilli golua lua 2 呼叫lua指令碼的幾個重要函式 l lua.newstate 建立乙個lua虛擬機器 l.dofile 設定要呼叫的lua檔案 l.getfield lua.lua globalsindex,獲取lua指令碼的符號 l.c...