redis~luaスクリプトの使用
1254 ワード
luaスクリプトによるredisコマンドの実行は、主に一括実行と言語間で行われ、redisを使用することができます.call()関数はluaスクリプトを実行します.次に、いくつかのluaのパラメータを紹介します. evalはLua言語を実行するコマンドを表します. lua-scriptはLua言語スクリプトを表します. key-numはパラメータの中に何個のkeyがあるかを表し、Redisのkeyは1から始まり、keyのパラメータがなければ0と書くことに注意しなければならない. [key 1 key 2 key 3...]は、keyがパラメータとしてLua言語に渡されたものであり、記入しなくてもよいが、key-numの個数に対応する必要がある. [value 1 value 2 value 3...]これらのパラメータはLua言語に渡され、彼らは記入しても記入しなくてもよい.
≪インスタンス|Instance|emdw≫
redisにfooを追加します.値はlindです.
次の例は、分散ロックを実装するluaスクリプトです.
このスクリプトは開発言語とは関係ありません.
eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
≪インスタンス|Instance|emdw≫
redisにfooを追加します.値はlindです.
eval "return redis.call('set',KEYS[1],ARGV[1])" 1 foo value
次の例は、分散ロックを実装するluaスクリプトです.
local lockClientId = redis.call('GET', KEYS[1])
" +
"if lockClientId == ARGV[1] then
" +
" redis.call('PEXPIRE', KEYS[1], ARGV[2])
" +
" return true
" +
"elseif not lockClientId then
" +
" redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2])
" +
" return true
" +
"end
" +
"return false"
このスクリプトは開発言語とは関係ありません.