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

redis 同时被 3 个专栏收录
1 篇文章 0 订阅
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实例。(同时加锁,大部分锁加锁成功才算成功)

  • 2
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
<p> <br /> </p> <p> <span style="font-size:14px;color:#E53333;">概要介绍</span><span style="font-size:14px;color:#E53333;">:</span><span></span> </p> <p> <span style="font-size:14px;">本课程主要是介绍并实战一款</span><span style="font-size:14px;">java</span><span style="font-size:14px;">中间件</span><span style="font-size:14px;">~redisson</span><span style="font-size:14px;">,介绍</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">相关的核心技术栈及其典型的应用场景,其中的应用场景就包括布隆过滤器、限流器、短信发送、实时</span><span style="font-size:14px;">/</span><span style="font-size:14px;">定时邮件发送、数据字典、分布式服务调度等等,在业界号称是在</span><span style="font-size:14px;">java</span><span style="font-size:14px;">项目里正确使用</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">的姿势。本课程的目标就在于带领各位小伙伴一起学习、攻克</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">,更好地巩固自己的核心竞争力,而至于跳槽涨薪,自然不在话下!</span><span style="font-size:14px;"> </span> </p> <p> <span style="font-size:14px;color:#E53333;">课程内容</span><span style="font-size:14px;color:#E53333;">:</span><span></span> </p> <p> <span style="font-size:14px;">说起</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">,可能大伙儿不是很熟悉,但如果说起</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">,想必肯定很多人都晓得。没错,这家伙字如其名,它就是架设在</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">基础上的一款综合性的、新型的中间件,号称是</span><span style="font-size:14px;">java</span><span style="font-size:14px;">企业级应用开发中正确使用</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">的姿势</span><span style="font-size:14px;">/</span><span style="font-size:14px;">客户端实例。</span><span></span> </p> <p> <span style="font-size:14px;">它是架设在</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">基础之上,但拥有的功能却远远多于原生</span><span style="font-size:14px;">Redis</span><span> </span><span style="font-size:14px;">所提供的,比如分布式对象、分布式集合体系、分布式以及分布式服务调度等一系列具有分布式特性的对象实例</span><span style="font-size:14px;">…</span> </p> <p> <span style="font-size:14px;">而这些东西</span><span style="font-size:14px;">debug</span><span style="font-size:14px;">将在本门课程进行淋漓尽致的介绍并实战,除此之外,我们将基于</span><span style="font-size:14px;">spring boot2.0</span><span style="font-size:14px;">搭建的多模块项目实战典型的应用场景:对象存储、数据字典、短信发送、实时</span><span style="font-size:14px;">/</span><span style="font-size:14px;">定时邮件发送、布隆过滤器、限流组件、分布式服务调度</span><span style="font-size:14px;">....</span><span style="font-size:14px;">课程大纲如下所示:</span><span></span> </p> <p style="text-align:center;"> <img src="https://img-bss.csdn.net/202002161014439278.jpg" alt="" /> </p> <p> <span style="font-size:14px;">下面罗列一下比较典型的核心技术栈及其实际业务场景的实战,如下图所示为</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">基于订阅</span><span style="font-size:14px;">-</span><span style="font-size:14px;">发布模式的核心技术</span><span style="font-size:14px;">~</span><span style="font-size:14px;">主题</span><span style="font-size:14px;">Topic</span><span style="font-size:14px;">的实际业务场景,即实时发送邮件:</span><span></span> </p> <p style="text-align:center;"> <img src="https://img-bss.csdn.net/202002161014551383.png" alt="" /> </p> <p> <span style="font-size:14px;">而下图则是基于“多值映射</span><span style="font-size:14px;">MultiMap</span><span style="font-size:14px;">”数据结构实战实现的关于“数据字典”的缓存管理:</span><span></span> </p> <p style="text-align:center;"> <img src="https://img-bss.csdn.net/202002161015054368.png" alt="" /> </p> <p> <span style="font-size:14px;">除此之外,我们还讲解了可以与分布式服务调度中间件</span><span style="font-size:14px;">dubbo</span><span style="font-size:14px;">相媲美的功能:分布式远程服务调度,在课程中我们动手搭建了两个项目,用于分别充当“生产者”与“消费者”角色,最终通过</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">的“服务调度组件”实现服务与服务之间、接口与接口之间的调用!</span><span style="font-size:14px;"> </span> </p> <p> <span style="font-size:14px;color:#E53333;">课程收益</span><span style="font-size:14px;color:#E53333;">:</span><span></span> </p> <p> <span style="font-size:14px;">(</span><span style="font-size:14px;">1</span><span style="font-size:14px;">)认识并掌握</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">为何物、常见的几种典型数据结构</span><span style="font-size:14px;">-</span><span style="font-size:14px;">分布式对象、集合、服务的应用及其典型应用场景的实战;</span><span></span> </p> <p> <span style="font-size:14px;">(</span><span style="font-size:14px;">2</span><span style="font-size:14px;">)掌握如何基于</span><span style="font-size:14px;">spring boot2.0</span><span style="font-size:14px;">整合</span><span style="font-size:14px;">redisson</span><span style="font-size:14px;">搭建企业级多模块项目,并以此为奠基,实战企业级应用系统中常见的业务场景,巩固相应的技术栈!</span><span></span> </p> <p> <span style="font-size:14px;">(</span><span style="font-size:14px;">3</span><span style="font-size:14px;">)站在项目管理与技术精进的角度,掌握对于给定的功能模块进行业务流程图的绘制、分析、模块划分、代码实战与性能测试和改进,提高编码能力与其他软实力;</span><span></span> </p> <p> <span style="font-size:14px;">(</span><span style="font-size:14px;">4</span><span style="font-size:14px;">)对于</span><span style="font-size:14px;">Java</span><span style="font-size:14px;">微服务、分布式、</span><span style="font-size:14px;">spring boot</span><span style="font-size:14px;">精进者而言,学完本课程,不仅可以巩固提高中间件的实战能力,其典型的应用场景更有助于面试、助力相关知识点的扫盲! 如下图所示:</span><span></span> </p> <p style="text-align:center;"> <img src="https://img-bss.csdn.net/202002161015169044.png" alt="" /> </p> <p> <span style="font-size:14px;color:#E53333;">关键字</span><span style="font-size:14px;"><span style="color:#E53333;">:</span>Spring Boot,</span><span style="font-size:14px;">Redis,</span><span style="font-size:14px;">缓存穿透</span><span style="font-size:14px;">,</span><span style="font-size:14px;">缓存击穿</span><span style="font-size:14px;">,</span><span style="font-size:14px;">缓存雪崩,红包系统,</span><span style="font-size:14px;">Mybatis</span><span style="font-size:14px;">,高并发,多线程并发编程,发送邮件,列表</span><span style="font-size:14px;">List</span><span style="font-size:14px;">,集合</span><span style="font-size:14px;">Set</span><span style="font-size:14px;">,排行榜,有序集合</span><span style="font-size:14px;">SortedSet</span><span style="font-size:14px;">,哈希</span><span style="font-size:14px;">Hash ,</span><span style="font-size:14px;">进阶实战</span><span style="font-size:14px;">,</span><span style="font-size:14px;">面试,微服务、分布式</span> </p> <p> <span style="font-size:14px;color:#E53333;">适用人群</span><span style="font-size:14px;"><span style="color:#E53333;">:</span>redisson学习者</span><span style="font-size:14px;">,</span><span style="font-size:14px;">分布式中间件实战者,微服务学习者,</span><span style="font-size:14px;">java</span><span style="font-size:14px;">学习者</span><span style="font-size:14px;">,spring boot</span><span style="font-size:14px;">进阶实战者,</span><span style="font-size:14px;">redis</span><span style="font-size:14px;">进阶实战者</span> </p>
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏

lizhenyi111

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值