在 Redis 中,你可以將 Lua 腳本與其他命令結合使用,以便在一個原子操作中執行多個命令。為了實現這一點,你可以使用 EVAL
或 EVALSHA
命令。這兩個命令的主要區別在于,EVAL
命令需要提供腳本的字符串表示,而 EVALSHA
命令需要提供腳本的 SHA1 哈希值。
以下是一個示例,展示了如何在 Redis Lua 腳本中結合使用其他命令:
-- 假設我們有一個鍵名為 "mykey" 的字符串值
local mykey = KEYS[1]
-- 獲取當前時間戳
local current_timestamp = tonumber(ARGV[1])
-- 將當前時間戳與 "mykey" 的值連接起來
local result = redis.call('GET', mykey) .. ':' .. current_timestamp
-- 將結果保存到一個新的鍵 "mykey:result" 中
redis.call('SET', 'mykey:result', result)
-- 返回結果
return result
要將此腳本與 Redis 命令結合使用,你可以使用 EVAL
或 EVALSHA
命令。例如,你可以使用以下命令將腳本與 SET
命令結合使用:
EVAL "$(cat script.lua)" 1 mykey 1633072800
或者,如果你已經為腳本計算了 SHA1 哈希值,你可以使用 EVALSHA
命令:
EVALSHA <script_sha1> 1 mykey 1633072800
請注意,你需要將 <script_sha1>
替換為實際的 SHA1 哈希值。你可以使用 redis-cli
命令計算哈希值:
redis-cli --eval script.lua , 1 mykey 1633072800
這將輸出腳本的返回值。