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);
}
版权声明:本文为BCDMW233原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。