什么是分布式锁
1.线程锁
2.进程锁
3.分布式锁
分布式锁的由来
分布式锁的特点
分布式锁的具体实现
分布式锁一般有三种实现方式:
Redis实现分布式锁
1.加锁
jedis.set(String key, String value, String nxxx, String expx, int time)
这个set()方法一共有五个形参:
总的来说,执行上面的set()方法就只会导致两种结果:
2.解锁
public class RedisTool {
private static final Long RELEASE_SUCCESS = 1L;
/* 释放分布式锁
@param jedis Redis客户端
@param lockKey 锁
@param requestId 请求标识
@return 是否释放成功
*/
public static boolean releaseDistributedLock(Jedis jedis, String lockKey, String requestId) {
String script = “if redis.call(‘get’, KEYS[1]) == ARGV[1] then return redis.call(‘del’, KEYS[1]) else return 0 end”;
Object result = jedis.eval(script, Collections.singletonList(lockKey),Collections.singletonList(requestId));
if (RELEASE_SUCCESS.equals(result)) {
return true;
}
return false;
}
}