3.3K Star 9.9K Fork 4.5K

iBase4J / iBase4J

 / 详情

redis RedisHelper.java 中 setnx 返回null失败的问题

已完成
创建于  
2017-10-23 16:45

分布式锁需要的都是同时,如果reidis中开启事务的化,就不会立即把命令执行到redis中,所以
redisTemplate.setEnableTransactionSupport(false) 来关闭事务,但这样关闭后 会不会是 全局都关闭了redis事务???

 public boolean setnx(String key, Serializable value) {
    	redisTemplate.setEnableTransactionSupport(false);
        RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
        RedisConnection redisConnection = null;
        try {
            redisConnection = RedisConnectionUtils.getConnection(factory);
            return redisConnection.setNX(keySerializer.serialize(key), valueSerializer.serialize(value));
        } finally {
            RedisConnectionUtils.releaseConnection(redisConnection, factory);
        }
    }

    public boolean lock(String key) {
    	redisTemplate.setEnableTransactionSupport(false);
        RedisConnectionFactory factory = redisTemplate.getConnectionFactory();
        RedisConnection redisConnection = null;
        try {
            redisConnection = RedisConnectionUtils.getConnection(factory);
            return redisConnection.setNX(keySerializer.serialize(key), valueSerializer.serialize("0"));
        } finally {
            RedisConnectionUtils.releaseConnection(redisConnection, factory);
        }
    }

评论 (1)

省略号... 创建了任务

更新代码试试

A圣翔 关闭了任务

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
728904 ite 1578931590 511066 nickeyhi 1578926145
Java
1
https://gitee.com/iBase4J/iBase4J.git
git@gitee.com:iBase4J/iBase4J.git
iBase4J
iBase4J
iBase4J

搜索帮助

344bd9b3 5694891 D2dac590 5694891