redis~luaスクリプトの使用

1254 ワード

luaスクリプトによるredisコマンドの実行は、主に一括実行と言語間で行われ、redisを使用することができます.call()関数はluaスクリプトを実行します.次に、いくつかのluaのパラメータを紹介します.
eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
  • 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です.
     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"

    このスクリプトは開発言語とは関係ありません.