利用redis实现分布式锁
利用redis来实现分布式锁。一般就用setnx和getset两个命令。 NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists. getset是同步的 java之jedis实现 expireMsecs 锁持有超时,防止线程在入锁以后,无限的执行下去,让锁无法释放 timeoutMsecs 锁等待超时,防止线程饥饿,永远没有入锁执行代码的机会 代码如下: private int timeoutMsecs private String lockKey private static long expireMsecs = 1000 * 60 * 5 // min 锁持有超时 // timeoutMsecs 表示锁等待超时 public JedisLock(Integer timeoutMsecs, String lockKey) { this.timeoutMsecs = timeoutMsecs this.lockKey = lockKey } public synchronized boolean acquire(Jedis jedis) th....