1 不可重入锁
@GetMapping("/test")
public JsonData test(@RequestParam(name="key")String key,@RequestParam(name="accountNo")Long accountNo){
//key[1]是key,ARGV[1]是accountNo,ARGV[2]是过期时间
//判断key是否存在
String script = "if redis.call(EXISTS,KEYS[1])==0 then" +
//不存在则设置key和value
" redis.call(set,KEYS[1],ARGV[1]);" +
//设置过期时间
" redis.call(expire,KEYS[1],ARGV[2]); " +
//返回1
"return 1;" +
//不相同返回0
" else return 0;" +
" end;";
Long result = redisTemplate.execute(new
DefaultRedisScript<>(script, Long.class), Arrays.asList(key), accountNo,100);
return JsonData.buildSuccess(result);
}
1 可重入锁
@GetMapping("/test")
public JsonData test(@RequestParam(name="key")String key,@RequestParam(name="accountNo")Long accountNo){
//key[1]是key,ARGV[1]是accountNo,ARGV[2]是过期时间
//判断key是否存在
String script = "if redis.call(EXISTS,KEYS[1])==0 then" +
//不存在则设置key和value
" redis.call(set,KEYS[1],ARGV[1]);" +
//设置过期时间
" redis.call(expire,KEYS[1],ARGV[2]); " +
//返回1
"return 1;" +
//如果存在则判断value是否相同
" elseif redis.call(get,KEYS[1]) == ARGV[1] then" +
//可重入返回2
" return 2;" +
//不相同返回0
" else return 0;" +
" end;";
Long result = redisTemplate.execute(new
DefaultRedisScript<>(script, Long.class), Arrays.asList(key), accountNo,100);
return JsonData.buildSuccess(result);
}