jedis实现分布式锁 (分布式锁的 实现方式有zookeeper 数据库 redis)
获取分布式锁
String result = jedis.set(lockKey, userId, "NX", "PX", expireTime);
if("OK".equals(result)){
return true
}
等价于
事务
1.setnx lockKey userId
2.expire lockKey px expireTime
如果1没有成功,则直接返回加锁失败
释放锁
String luaScript = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
Object result = jedis.eval(luaScript , Collections.singletonList(lockKey), Collections.singletonList(userId));
if ("1".equals(result)) {
return true;
}
return false;

浙公网安备 33010602011771号