• 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;
        }

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

      

  • 相关阅读:
    第19章_枚举:
    第14章_类型信息:
    第13章_字符串:
    纯css背景图自适应
    事务隔离机制_悲观锁_乐观锁
    hibernate 缓存
    list 和 iterate
    hibernate 性能优化之 1+N 问题
    QBC(Query By Criteria) QBE (Query By Example)
    HQL(Hibernate Query Language)
  • 原文地址:https://www.cnblogs.com/gisblogs/p/5872051.html
Copyright © 2020-2023  润新知