轻巧

Java用Redisson分布式锁

2022-08-05  本文已影响0人  AC编程

一、代码

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失效场景

上一篇 下一篇

猜你喜欢

热点阅读