Redis执行lua脚本

原创
01/28 18:08
阅读数 83

1、客户端执行
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
需要注意的是用逗号来分割key和参数,高能提醒,注意空格(key和key、key和逗号、逗号和参数、参数和参数之间都要有空格)
./redis-cli –eval [lua脚本] [key…]空格,空格[args…]
比如控制活跃用户

先在redis中设置一个user对象(String类型)
然后执行lua脚本
#$REDIS_HOME/redis-cli --eval /web/project/lua/activeuser.lua user , 1


#this is activeuser.lua 
if redis.call("EXISTS",KEYS[1]) == 1 then
     return redis.call("INCRBY",KEYS[1],ARGV[1])
   else
     return nil
   end

2、命令执行

命令格式 说明 对应Jedis客户端Jedis对象的方法之一(有更多重载方法)
EVAL script numkeys key [key ...] arg [arg ...] 执行Lua脚本

 

public Object eval(String script, int keyCount, String... params)

EVALSHA sha1 numkeys key [key ...] arg [arg ...] 根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值 public Object evalsha(String sha1, int keyCount, String... params)
SCRIPT LOAD script 将给定的脚本缓存,不执行,并返回sha1校验值 public String scriptLoad(String script)
SCRIPT EXISTS sha1 [sha1 ...] 给定一个或多个脚本的 SHA1 校验和,返回一个包含 0 和 1 的列表,表示校验和所指定的脚本是否已经被保存在缓存当中 public List<Boolean> scriptExists(String... sha1) 
SCRIPT FLUSH  清除所有 Lua 脚本缓存  
SCRIPT KILL 杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效(如果已经执行了写操作,则需要通过shutdown nosave命令来处理)  

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部