00:00
啊,入门程序写完之后,我们来去看一下这个入门程序,但整个入门程序其实只分成三步啊,第一步呢是引入依赖啊,通过这个坐标就可以引入的相关价包了。那么第二步我们要去写一个配置类,在配置类里面通过并注解向spring的IOC容器。初始化一个RA clean对象。那么既然在代码中,我如果要用到这个RA clean展厅呢?直接通过atra where的输入就可以了。好,那么来看这个配置类。那这个配置类里面咱们有几行代码,我们可以呢,去详细解读一下啊,首先呢,是咱这个地方是初始化一个配置对象。那这个P对象啊。啊,配置对象呢,它里面有很多。参数可以去设置。那么首先呢,我们这里呢,设置了一个,呃,User single server那个玩意儿。啊,使用单机服务这种模式,你可以设置模式啊。
01:04
那么也有其他模式可供选择,我们可以去看一下,点上呢,有U字开头的。那比如说呢,有单机模式,有分片模式啊,可以自定义一些模式啊,组图模式,副本模式以及哨兵模式。那我们这地方呢,只有单台服务器,所以呢,我们使用的是单机模式。那么单机模式我们只要设置一个地址就可以了,那假如说呢,你不是单机模式,你是啊集群模式,那比如说你可能会选择使用class啊service,那这里面呢,还有可能就ad no address,你可以添加多个地址了。它是一个不定参数,你可以写多个地址,以逗号定的分隔就可以了。好,那我们这个地方呢,咱使用的是单机模式,给它还原回去啊,来一个user single server,那我们这个地方呢,只要设置一个地址就可以了。那地址呢,必须要以release冒号双斜杠开头,那么然后呢,跟上IP地址以及端口号。
02:07
好,这是设置RA服务器地址。那么然后呢,我们还可以去设置什么参数呢?我们可以呢,再去看一看啊,在这个位置呢,我们可以再去点上。那比如说我们可以去set我们的数据库,我们知道release它默认有16个编号的数据库啊,那我们默认情况下使用的是第一个就编号为零的一个。那么你也可以去指定。那么咱一般情况下呢,咱不用去指定啊,如果你需要指定的话,你可以在这个地方呢,去指定一下哈。OK,那么这个呢,3:3就指定的是一个零嘛。好,这是可以呢,去指定RA数据库,然后呢编号。啊,比如咱OA呢,有16个数据库啊这样子。那么然后再去点上site,我们还可以去设置用户名以及密码,有的同学呢,呃,它可能设置的用户名和密码,那么你也可以去设置一下。
03:10
那么这是嗯,用户名这两个玩意儿,当然了,我这里呢,是没有用户名的啊。啊,这是RA用户名,那有用户名就必然会有密码,那密码的话呢,也是也就可以去设置了,有这个password这个玩意儿。好,这是设置用户名和和密码。好,这一块呢,我没有用户名和密码,所以呢,我可以把它呢给注释掉就可以了啊。那么然后呢,咱们再来去看啊,还可以去设置。设置连接使的。一些参数,比如说呢,你的最小线程数。然后最角线整数。那我们这的话呢,你可以去根据自己的需求来去设置一下,好,这是连接池最小,它是最小空弦连接数啊,就最小呢,会有这么几个线程。
04:14
它会有这么多线程。那我们这地方呢,我也可以设置啊,啊,它不是必须的一个参数,当然呢,最好呢,在生产环境的时候呀,你最好呢去设置一下,那么开发环境呢,咱就直接越过了啊。那么然后我们还可以去,嗯,设置那么连接池的最大啊,连接数最大线程数。那比如说咱可以设置成呃50这样子,好,这是连接池。啊,连接池最大线程数,最大线程数。好,那么这个地方呢,在还是一样哈,我们在生产环境最好给它设置一下,那么这的话呢,我也直接略过了啊。
05:01
那么然后还可以去设置咱们这个空闲时间。那比如说呢,我平时可能只需要十个线程就可以了,但是在高并发情况下,十个线程可能会不够,我们呢,可能会开启50个线程。那么然后呢,过了一段时间可能又空闲了,五十五十个线程啊,用不完。那用完的话呢,那这个线程它一直放在那里,也会浪费CPU资源啊,那怎么办呢?我们就可以呢,让他等一会,如果依然没有任务给他进行处理的话,我们就可以把。扩展的这些线程给销毁掉,哎,把这些呢,核心线程数以外的线程给销毁掉。比如说横心线程数呢是十个,最大空散线程数呢是50个,那么有四线,40个线程是扩展出来的,那么这四个线程啊,那在空闲的时候呢,如果超过这么长时间依然空闲着,就要把它给消毁掉。好,那比如说你可以设置一个时间啊,啊,咱可以呢,比来设置一个,那么这单位是多少呢?是秒还是毫秒呢?我们可以看一下啊,是毫秒值,那比如说呢,你要设置成60秒的操作时间,你可以写一个6万的这个地方就可以了。
06:10
好,这是这是线程的超时,超时时间。那我们还可以去设置那么这个connect connect timeout。好,这是我们获取链接的。超的时间。好,这是我们的客户端,客户端程序等等获取ready链接的超时时间,哎,如果超过这么多时间,我依然没有连接上这的意思,哎,我就不等了,那就可以快速失败。啊,这是获取链接的超时链,那我们呢,也可以呢,不设置啊这样子。好,那么然后最后呢,来可以再去设置那个这样的一个参数来看一下,点上that,就是time out。
07:05
Time out呀,这个呢是响应时间啊,如果超过这么长时间,你依然没有任何响应,那我们也可以快速失败。好,这是咱们的响应超时,超时时间。好,那么这些参数呀,建议呢,如果是生产环境的话,都去配置一下啊,那么开发环境我们都可以不配置,我们只配置一个地址,哎,能不能玩呢,就可以去玩了啊。OK,那我们这个参数呢,大家还是比较了解一下的。啊,那么然后最后呢,我们只要把这个配置类啊给这个red,那这个reding啊,它其实呢,也是一个类啊,也是一个类,它最终实现了。因为它里面呢,就会有啊,有一些初始化方法,可以初始化一个。
08:00
那么这个初始化方法咱可以看一下。你首先它有一个构造文法。啊,勾当动法它可以初始化一个,它本质就是个red性它啊,哎,那我是不是可以使用这个勾当法一初始化呢,还不可以,因为它是一个受保护的啊。不能在包以外的也使用它。那所以呢,咱只能去使用其他的方法来初始化一个RA对象了。那本质就是肯定对象啊。好,那么这个,呃,大家使用什么方法呢?是不是设了一个可瑞的方法,那你也发现可谓的方法的反问结果集刚好呢,是raising clean。那么有一个是午餐的,这个午餐的它默认地址就是本机的地址,点127.0.0.16379。那么必须以冒号双斜杠开头啊。那我们还有一个呢,是有参的,它可以基于这样的一个配置对象来初始化一个clean。好,这咱们这个配置类我们就解读完了,那么里面呢,有一些常用配置。
09:04
那么然后再看我们的具体代码的实现,代码实现呢,也没什么太多可说的啊,那么首先呢,它这里有个reding弹性对象,我们需要给它注入进来。输入好之后呀,我们通过这个肯定对象可以获取一个锁。那获得这个锁呀,那我们就可以通过这个锁对象可以加锁了,然后呢,可以解锁,哎,那么这个解锁呀,我其实呢,可以这么去玩,我不手动去解锁了。那么在加速的时候呢,我们可以指定一个,嗯,指定一些参数的,指定一个过期时间这样一个参数。啊,要锁定多长时间。那比如说我刚锁定一个十,然后是time unit。Unit点上CS,我能锁十秒钟。那么一旦加上这个时间之后呀,它十秒钟之后,即使你不去手动释放锁,它也会自动释放啊,当然你可以去手动释放锁,如果你不释放的话,它就十秒钟之后呢自动释放。
10:02
好,那我们这样去改造一下,改造好之后呢,我们来去重新启动一下,然后呢,我们来看看通过这十秒钟来看看release底层它怎么去玩这个锁的啊。好,那我们来去看这个。那启动过程启动的应该是没啥问题的啊。啊,启动已经成功了,那么启动成功之后呀,我们把这个呃,Release的客户端呢,先给拉出来,好,我们来去刷新一下,它会再刷十秒钟啊十秒钟之后自动解锁,他们来去刷新一下那一个log锁过去时间还有五秒。那它会以lock作为K,那以UUID呢,作为K,作为内存,这个K啊。然后呢,以重复次数作为概率,然后还有一个过去时间,那五秒钟之后呢,它会自动去释放锁啊,因为这个锁呢已经不存在了,我有释放锁吗?我没有去手动释放锁,但是呢,它十秒钟之后呢,会自动去释放。
我来说两句