什么是分布式锁

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;

    }

  }

05-11 18:20