美文网首页轻巧
Java用Redisson分布式锁

Java用Redisson分布式锁

作者: AC编程 | 来源:发表于2022-08-05 16:13 被阅读0次

    一、代码

    public void consume(MemberValueTaskItemVO valueItem) {
            RLock redissonLock = redissonClient.getLock(valueItem.getMemberId() + "");
            try {
                redissonLock.lock(6, TimeUnit.SECONDS);
    
                //处理消费逻辑
                doConsume(valueItem);
            } catch (Exception e) {
                log.error(e.getMessage());
                throw new AcException(e.getMessage());
            } finally {
                // 释放锁
                if (redissonLock.isLocked() && redissonLock.isHeldByCurrentThread()) {
                    redissonLock.unlock();
                }
            }
        }
    

    二、注意事项

    加锁代码不要写在@Transactional事务里面,否则锁会失效,锁不住数据,还是会出现并发问题。可参考Redisson失效场景

    相关文章

      网友评论

        本文标题:Java用Redisson分布式锁

        本文链接:https://www.haomeiwen.com/subject/fzppwrtx.html