你将获得
- 掌握某些知识点
- 学会某些技巧(或思路)
教学服务
- 1v1专属答疑服务
- BAT专家面试辅导
讲师介绍
课程详情
基于Redisson框架实现分布式锁视频文稿
看一下,比方说我不知道这个框架有没有同学说过叫ready,有听说过的给老师打个一,没有听说过的给老师打个一,就是市面上面有一个叫red is的框架,有个ready的客户端框架叫radish,听说了给老师打个一,没有听说过的打个零,都给朱老师的反馈,那实际上这个ready呢,它就是它也是一个red is的Java客户端,跟我们结的很类似,只不过这个客户端在分布式场景下面用的更多一点,你比方说你看,你看一下这个radish的一些这个客户端接地这个red is客户端很多功能,它的功能基本大多数都是分布式场景,下面你看Dis tribute Dis tribute Dis tribute Java Le对分布所对等等等等各种分布式场景,对不对,也就是说dispute Java service对不对,就是这个right的客户端,它可以帮我们解决分数乘下面的很多的问题,比方说我们今天讲的这个封锁,他就可以帮我们轻松的实现,那怎么来实现呢,我带你先快速,实现一遍,然后再带你分析它底层的原理,其实你要用ready来实现我们刚刚说的那么复杂的那个逻辑,它实现起来非常简单,那我们要既然要用radish,这个Java的ride Java版本的red是客户端对不对,其实跟用ready的,用我们的JD是基本上差不太多,你肯定有一个依赖,对不对,比方说我们这里有一个,加了这么一个依赖之后,然后干嘛,我需要在我肯定有了这个依赖,你肯定要干嘛,要把它初始化对不对,有这么一个regular客户端,你要给它初始化对不对,好,那么在这个地方就敢说实话,那我只用十分不同的方式,用一个APP,并注入到我们十分容器里面,非常非常简单,对不对,一样的,这个跟阶级的初始化方式一样,差不太多,对不对,你要连接的哪个red对不对,操作哪个的对不对,当你可以用有如果是单机,单机的那种right是这么来念,如果是集群radish它都提供,或者说哨兵模式他都提供,那这些都是ready的哪些APIOK,最终,把这边配置设置好之后,通过reg.create加上你这个RAID的配置,它就会帮你创建一个ready的客户端实力,有了这个实力注入到十倍容器里面的APP,并网时,容器里面注入,注入一下,注入之后,那时容器里面就有这个reaction,那我当然就可以auto well直接引入来使用,我们来看一下这个read怎么来使用,其实非常简单,首先,先拿到一个叫做锁的对象,那这个锁的对象他是这样,这样子你还是要把这个所的名字给他弄进去,OK,有一个ready上锁,OK,拿到这个锁对象,注意我这时还没有加速,只是先生成一个琐对象,然后在哪个地方,在这个地方,在这个地方我执行一行代码叫做落单,OK,执行这一行代码搞定,OK,说白了这一行代码就会加速,那然后最后当然你加了锁,最后肯定要在这个地方释放所,对吧,那当然我这些个乱七八糟的代码就不,之前那些代码都不需要,这些代码都不需要了,我告诉你这些代码都不需要,这些个代码都不需要了来来把注释掉,也就我们刚刚说的那些所有的代码都不需要,那上我核心的代码,我告诉你只有这一行加这一行,再加一个是方数,我给你解释一下这几行代码什么意思,它实际上是这样子的,这几行代码这么是这么回事儿,我给你稍微解释一下来,我把先把它美化一下,好吧,美化一下,那实际上正常代码这样我先获取在race那边,先在race那边先获取一个锁对象,先获取一个right的锁对象,但是我这时候还没有往right里面去加这把锁,那我当你看所对象我知道还是给她设置一个K,对不对,然后当我掉了ready的这个锁对象之间的这条命,我告诉你这条命令他底层做什么事情,我看底层错了,就这件事情做的就是这件事情,OK,就相当于做了一个JD式的一个点,Set n X,你可以把它这么来理解的,一层就做做了这一行代码的事情,OK,也就是说注意,有的同学说,他说那这个锁锁的操作时间30,注意它默认就是所30,说白了这样的代码就是他就在reddit那边底层设置一个这个key和value设置是类似于像一个它自己生成的一个客户端的线程ID,然后再把这个K给他设的超时时间默认给他设置了30秒,当然它还有一些其他API可以把这个时间让你自己去设置,OK,就这个意思,那实际上这一行代码做了,那时候假设我有多个线程来请求这一行代码,我告诉你只有第一个线程能够拿设置成功这把锁,因为底层逻辑就这就这个骂,说白了只有第一个线程拿到把手往后面去执行