jedis eval 运行lua脚本
String script="local ismeber=redis.call('setnx',KEYS[1],KEYS[1])"
+" if (ismeber==0) "
+ "then " //
+" return -1 "
+" end "
+"local ismeberexpire=redis.call('expire',KEYS[1],ARGV[1])"
+" if (ismeberexpire==0) "
+ "then " //
+" return -2 "
+" end "
+" return 1";
List<String> keys = new ArrayList<String>();
List<String> arg = new ArrayList<String>();
keys.add("foo");
arg.add("30");
System.out.println(script);
System.out.println(RedisUtil.eval(script,keys,arg));
redis 执行lua脚本 测试案例 赋值参考
eval "return redis.call('setnx',KEYS[1],KEYS[1])" 1 foo
本地:0>1
eval "return {KEYS[1],KEYS[2],KEYS[3],ARGV[1],ARGV[2],ARGV[3]}" 3 username1 username2 username3 v1 v2 v3
本地:0>
1) "username1"
2) "username2"
3) "username3"
4) "v1"
5) "v2"
6) "v3"
eval "return redis.call('setnx',KEYS[1],ARGV[1])" 1 foo f1
本地:0>1
如果 redis客户端使用evel命令,报ERR unknown command ‘EVAL’
解决方式:
检查redis版本是否大于等于2.6.0
如果版本没问题,打开redis.conf配置文件
检查是否有rename-command EVAL ""这项配置
如果有,注释掉#rename-command EVAL “”,重启redis即可