Redis 运行 Lua脚本事例

本文详细介绍了如何在Redis中使用Lua脚本来执行复杂的操作,包括设置唯一成员、设置过期时间和错误处理。通过具体示例展示了如何使用eval命令及解决常见错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值