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;
 
posted @ 2022-01-19 10:34  清明雨下  阅读(326)  评论(0)    收藏  举报