Redis exception; nested exception is io.lettuce.core.RedisException: java.lang.IllegalStateException
问题描述
在使用 redisTemplate 执行 lua 脚本的时候出现这个错
解决方案
原因: 接收 lua 执行结果和 lua 返回结果类型不一致
@Bean
public DefaultRedisScript<Long> secKillScript() {
DefaultRedisScript<Long> defaultRedisScript = new DefaultRedisScript<>();
defaultRedisScript.setResultType(Long.class);
defaultRedisScript.setScriptSource(
new ResourceScriptSource(new ClassPathResource("script/seckill.lua")));
return defaultRedisScript;
}
这里的Long 要和 lua script 中返回的对应,如果是返回字符串,那么就要改成String