當我們在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...