Redis_redis分布式锁-SETNX


  因业务需要使用了redis的SETNX来实现分布式锁。

  描述:Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists。这系列的命令非常有用,这里讲使用SETNX来实现分布式锁。 

  直接上重点:

  SET NX 命令是快速失败锁,就是当第一次设置key和value时返回1,当第二次设置相同的key时,返回0,此时对原值不做任何更改。

  使用Jedis调用此命令:

  

public static boolean setnxex(String key, Object value) {
        Jedis jedis = pool.getResource();
        byte[] encodeKey = SafeEncoder.encode(key);
        String result = jedis.set(encodeKey,serialize(value),"nx".getBytes(),"ex".getBytes(),EXPIRE_5_MINUTES);
        if("OK".equals(result)){
            pool.returnResourceObject(jedis);
            return true;
        }
        pool.returnResourceObject(jedis);
        return false;
    }

 

且删除锁的操作一定要是持有锁的人删除,这样才不会有问题。

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM