美文网首页
redis调用lua说明文档

redis调用lua说明文档

作者: allanYan | 来源:发表于2016-08-12 18:22 被阅读0次

redis调用lua脚本

在实际开发中,可以通过pipeline将多个命令批量传输给redis执行,减少网络开销;但有时候,由于执行的命令可能依赖前一命令的结果,在这种情况下,pipeline就不能满足我们的要求;
幸运的是redis中内置了对lua的支持,可以通过lua脚本完成此类工作;

调用方式

1. redis-cli --eval script key_count key1,key2...arg1 argn
2. redis-cli --evalsha scriptsha  key_count key1,key2...arg1 argn
3. redis-cli eval "$(cat script.lua)" key_count key1,key2...arg1 arg2

参数说明

  • key_count表示key参数的个数,在lua脚本中,可以通过KEYS+下标的方式引用;
  • argn表示参数,在lua脚本中可以通过ARGV+下标的方式引用;

例子

1.lua

local result=0
    local id= redis.call('get',KEYS[1])
if id then
    result= redis.call('sismember',id,KEYS[2])
end
 
if result==1 then
    redis.call('expire',KEYS[1],ARGV[1])
end
  
return result
  redis-cli  --eval 1.lua 2 user1 user:list 1800
  或
  redis-cli  eval "$(1.lua)" 2 user1 user:list 1800
  或
  redis-cli  script load "$(cat 1.lua)"
  redis-cli  evalsha 2cfe726fe60678e8ed4d689a3e98727d1e1e2339 1 test 1

注:2cfe726fe60678e8ed4d689a3e98727d1e1e2339是script load产生的sha值;如果redis需要认证,可以通过-a参数

脚本调试

redis3.2之后内置了debug引擎,可以通过--ldb选项进入debug模式

redis-cli --ldb evalsha 2cfe726fe60678e8ed4d689a3e98727d1e1e2339 1 test 1
Paste_Image.png

相关文章

网友评论

      本文标题:redis调用lua说明文档

      本文链接:https://www.haomeiwen.com/subject/oaresttx.html