redis 设置锁
public boolean setLock(String lockKey, String value, String expireTime) {
boolean ret = false;
String script = "if redis.call('setNx',KEYS[1],ARGV[1])==1 then return redis.call('expire',KEYS[1]," + expireTime + ") else return 0 end";
RedisScript<Long> redisScript = new DefaultRedisScript(script, Long.class);
Object result = redisTemplate.execute(redisScript, Collections.singletonList(lockKey), new Object[]{value});
if (1L == (Long)result) {
ret = true;
}
return ret;
}
public boolean releaseLock(String lockKey, String value) {
String script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
RedisScript<Long> redisScript = new DefaultRedisScript(script, Long.class);
Object result = redisTemplate.execute(redisScript, Collections.singletonList(lockKey), new Object[]{value});
return 1L == (Long)result;
}