package com.github.ltsopensource.core.registry.redis;
import redis.clients.jedis.Jedis;
/**
* 锁会自动释放
* @author Robert HG (254963746@qq.com) on 9/9/15.
*/
public class RedisLock {
private String lockKey;
private String lockValue;
private int expiredSeconds;
public RedisLock(String lockKey, String lockValue, int expiredSeconds) {
this.lockValue = lockValue;
this.lockKey = lockKey;
this.expiredSeconds = expiredSeconds;
}
public boolean acquire(Jedis jedis) {
String value = jedis.get(lockKey);
if (value == null) {
boolean success = jedis.setnx(lockKey, lockValue) == 1;
if (success) {
jedis.expire(lockKey, expiredSeconds);
return true;
}
} else if (lockValue.equals(value)) {
jedis.expire(lockKey, expiredSeconds);
return true;
}
return false;
}
}