local key = KEYS[1]
if redis.call("get",key)+1 > tonumber(ARGV[1]) then
return true;
else
return false;
end
初始化加载
@PostConstruct
public void init() {
getRedisScript = new DefaultRedisScript<>();
getRedisScript.setResultType(Boolean.class);
getRedisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("limitConcurrent.lua")));
redisTemplate.opsForValue().set(COUNT_KEY, 0);
}
执行
@Test
public void testLua() throws Exception {
Boolean result = redisTemplate.execute(getRedisScript, Lists.newArrayList(COUNT_KEY), 10);
}
传递的第一个List对应LUA脚本中的KEYS数组,后续的参数对应LUA脚本中的ARGV数组
参考https://blog.csdn.net/u011890101/article/details/84336654