项目中redisson的误用(一)

redisson框架很好的解决了redis存在的一些问题,譬如锁续期;但是封装的一般,开发人员容易误用;

基于项目报错信息排查的情况如下:

解锁的时候发现已不持有该锁,发现项目代码如下:

需改为

            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
                lock.unlock();
            }

 但仔细想了下,为什么redisson有看门狗机制,竟然没有锁续期?

查看代码

刚好没有触发看门狗机制;

如何启动Redisson的看门狗机制?
如果你想让Redisson启动看门狗机制,你就不能自己在获取锁的时候,定义超时释放锁的时间,无论,你是通过lock() (void lock(long leaseTime, TimeUnit unit);)还是通过tryLock

boolean tryLock(long time, TimeUnit unit) throws InterruptedException;

获取锁,只要在参数中,不传入releastime,就会开启看门狗机制,
就是这两个方法不要用: boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws InterruptedException
void lock(long leaseTime, TimeUnit unit);因为它俩都传leaseTime

改为

boolean isLock = lock.tryLock(10,  TimeUnit.SECONDS);

 redisson固然好用,但是还是要熟悉其用法;最好在业务层面能基于redisson进行封装,这样项目中使用起来更方便

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值