springBoot集成redisson,以及redisson常用的方法

1 篇文章 0 订阅
1 篇文章 0 订阅

本文主要介绍redisson的分布式锁,其他功能请查看redisson的中文文档apihttps://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95

首先导入redisson的依赖

      <!--redisson-->
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.11.6</version>
        </dependency>

编写redisson的配置文件

我们项目中使用的是阿里云的redis ,其他配置文件都是采用redisson默认的,因为是dev环境,采用的是单机版redis,图中我圈住的地方就是单机版redisson采用的server,主从,集群版请才用其他server,设置ssl链接的格式为:redis://IP地址:端口号,有密码的话后面serpassword();

下面是redisson常用的分布式锁方法

RLock(可重入锁):

public void lock(String name) throws InterruptedException {
        //获得name的锁
        RLock lock = redissonClient.getLock(name);
        //对name进行加锁 线程会一直等待 直到拿到该锁
        lock.lock();
        //尝试对name进行加锁,线程会一直等待 直到拿到该锁 然后10秒后自动解锁
        lock.lock(10L,TimeUnit.SECONDS);
        //对name进行解锁,如果锁不是该线程持有则会抛出异常
        lock.unlock();
        //强制对name进行解锁,即此锁不论是那个线程持有都会进行解锁
        lock.forceUnlock();

        //尝试对name进行加锁,如果该锁被其他线程持有,会等待10秒,然后返回是否成功,如果成功 会在20秒后自动解锁
        boolean b = lock.tryLock(10L, 20L, TimeUnit.SECONDS);

        //尝试对name进行加锁 立即返回加锁状态 如果加锁成功会在20秒后自动解锁
        boolean b1 = lock.tryLock(20L, TimeUnit.SECONDS);
        //检查该锁是否被任何线程所持有
        boolean locked = lock.isLocked();
        //检查该锁是否当前线程持有
        boolean heldByCurrentThread = lock.isHeldByCurrentThread();
        //当前线程对该锁的保持次数
        int holdCount = lock.getHoldCount();
        //该锁的剩余时间
        long l = lock.remainTimeToLive();
    }

以上是可重入锁的常用方法,FLock(公平锁)的使用方式跟以上一样

其他锁相关概念:

MultiLock(联锁):基于Redis的Redisson分布式联锁RedissonMultiLock对象可以将多个RLock对象关联为一个联锁,每个RLock对象实例可以来自于不同的Redisson实例(同时加锁,所有锁都加成功才算成功)

RedLock(红锁):基于Redis的Redisson红锁RedissonRedLock对象实现了Redlock介绍的加锁算法。该对象也可以用来将多个RLock对象关联为一个红锁,每个RLock对象实例可以来自于不同的Redisson实例。(同时加锁,大部分锁加锁成功才算成功)

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值