我们现在看到的就是redission官方网站
https://redisson.org
首页可以看出来,redisson可以实现很多东西,在redisson的基础上,redisson做了超多的封装,我们看一下,例如说
Spring Cache,TomcatSession,Spring Session,可排序的Set,还有呢Sortedsort,下面还有各种队列,包括这种双端
队列,还有map,这些是数据结构,下面就是各种锁,读写锁,这里面的锁还包含,可重入锁,还有CountDownLantch,这个是
在多线程的时候使用的,比如说我启动很多个线程,去执行某个任务,然后把任务进行切分,都完成之后有一个等待,等待
所有线程都达到这里之后,在一起往下走,把异步再变成同步,下边是一些线程池,还有订阅的各种功能,ScheduleService
来做调度的一个任务,所以Redisson是非常强大的,然后我们在右上角有一个documentation,我们打开他
这就是github的redisson官方的文档
https://github.com/redisson/redisson/wiki
我们点击中文来看一下
https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95
左侧是详细的一个目录,上面这些都是配置方法,各种配置方法这里都是有的,我们任意点击进去,我们可以看到,
这里面的说明是非常详细的,因为redisson非常强大,我们主要是用redisson的可重入锁,用它来做一个分布式锁,
建议有兴趣的可以仔细研读redisson,中文文档或者英文文档都可以,这里面你肯定能收获很多,第三是程序调用的
一种方式,还有数据序列化,还有单个集合的数据分片,这个很好理解,比如说我又单个集合,里面非常大,我们把它
做一个分片,还有分布式对象,例如同样对象桶,二进制流,地理空间对象桶,这个在我们做地图应用的时候呢,也是非常
有用的,分布式集合也是非常有用,Map简单理解就是映射,Multimap是多值映射,例如说一对多的关系,我们在Map里面放了
一个key,然后放了一个value,那我们可以选择基于set的多值映射,基于list的多值映射,里面还提供了多值映射的
淘汰机制,这里面有很多,刚刚说过的双端队列,也就是说多列头和多列尾,都可以进行操作,下面还有各种阻塞延迟优先,
优先双端队列
我们重点看这里面,分布式锁redisson,提供了强大的分布式锁,提供了公平所,红锁,读写锁,还有信号量
分布式远程服务,Remote Service,这里面也非常强大,这在构建分布式应用的时候,这里面用的非常多
还有Redis命令和Redisson对象的匹配列表,建议这可以多看一下
例如我们会整合Spring框架,前面我们讲了单点登陆,我们原生的实现了单点登陆,同时也使用了Spring官方的
Spring Session,来完成单点登陆,解决Tomcat集群环境下,Session共享的一个问题,那Redisson本身还提供Tomcat
Session Manager,还有Spring Session会话管理器,这些都是非常强大的,
https://github.com/redisson/redisson
那主要的项目就是redisson这个项目,下面还有redisson的一些docker,正如我们前面所说的,我们在学习Spring框架的
时候,可以看一些官方的例子,那在学Redisson的时候呢,也可以优先看一下Redisson官方的一些例子,这里面写的通俗易懂,
那我们就往下看一下,在分布式当中,里面的可重入锁
https://github.com/redisson/redisson/wiki/
8.-%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81%E5%92%8C%E5%90%8C%E6%AD%A5%E5%99%A8#81
-%E5%8F%AF%E9%87%8D%E5%85%A5%E9%94%81reentrant-lock
首先我们看一下Reentrant Lock,这个还支持自动过期解锁,那正如我们之前手写的分布式锁,我们也是支持过期自动解锁的,
那在设置锁的时候呢,可以看这里面,尝试加锁,最多等待100秒,上锁以后10秒自动解锁,下面直接unlock
// 加锁以后10秒钟自动解锁
// 无需调用unlock方法手动解锁
lock.lock(10, TimeUnit.SECONDS);
// 尝试加锁,最多等待100秒,上锁以后10秒自动解锁
boolean res = lock.tryLock(100, 10, TimeUnit.SECONDS);
if (res) {
try {
...
} finally {
lock.unlock();
}
}
其实在讲Redisson之前,我们是手写的一个分布式锁,这和我们在使用Spring Session之前,也是手写的解决Session共享的,
一个问题,这样学习其实理解这个问题,比解决方案更加深刻,例如之前我们讲的两种,为什么讲了两种,非常简单,如果在
日常工作中,需要改造TOMCAT集群方式的话,很有可能你的业务侵入会比较大,那么我们讲了Spring Session框架,这个时候
你就可以引用Spring Session框架,其实在这些方面我也发了很多心思,主要是可以实际落地,能在实际工作当中来使用他,
那么Redisson其实也是一个增补的知识,通过Redisson实现分布式锁的时候,真的超级简单,用的超级爽,所以Redisson提供的
各种功能,我们都可以大方的使用它,包括Redis,由于Redisson是Redis的一个深入扩展,并且它在实际的工作场景当中,会提高
我们的开发效率,其实Redisson可以带给我们更高的视野