zoukankan      html  css  js  c++  java
  • 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;
        }

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

      

  • 相关阅读:
    Linux 命令
    Linux 命令
    Linux 命令
    Linux 命令
    121.Best Time to Buy and Sell Stock---dp
    136.Single Number---异或、位运算
    141.Linked List Cycle---双指针
    Restful接口设计
    socket网络编程
    107.Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/gisblogs/p/5872051.html
Copyright © 2011-2022 走看看