Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优点,基于Java实用工具包中经常使用接口,为使用者提供了一系列具备分布式特性的经常使用工具类。使得本来做为协调单机多线程并发程序的工具包得到了协调分布式多机多线程并发系统的能力,大大下降了设计和研发大规模分布式系统的难度。同时结合各富特点的分布式服务,更进一步简化了分布式环境中程序相互之间的协做。html
Redisson采用了基于NIO的Netty框架,不只能做为Redis底层驱动客户端,具有提供对Redis各类组态形式的链接功能,对Redis命令能以同步发送、异步形式发送、异步流形式发送或管道形式发送的功能,LUA脚本执行处理,以及处理返回结果的功能,还在此基础上融入了更高级的应用方案,不但将原生的Redis Hash
,List
,Set
,String
,Geo
,HyperLogLog
等数据结构封装为Java里你们最熟悉的映射(Map)
,列表(List)
,集(Set)
,通用对象桶(Object Bucket)
,地理空间对象桶(Geospatial Bucket)
,基数估计算法(HyperLogLog)
等结构,在这基础上还提供了分布式的多值映射(Multimap)
,本地缓存映射(LocalCachedMap)
,有序集(SortedSet)
,计分排序集(ScoredSortedSet)
,字典排序集(LexSortedSet)
,列队(Queue)
,阻塞队列(Blocking Queue)
,有界阻塞列队(Bounded Blocking Queue)
,双端队列(Deque)
,阻塞双端列队(Blocking Deque)
,阻塞公平列队(Blocking Fair Queue)
,延迟列队(Delayed Queue)
,布隆过滤器(Bloom Filter)
,原子整长形(AtomicLong)
,原子双精度浮点数(AtomicDouble)
,BitSet
等Redis本来没有的分布式数据结构。不只如此,Redisson还实现了Redis文档中提到像分布式锁Lock
这样的更高阶应用场景。事实上Redisson并无不止步于此,在分布式锁的基础上还提供了联锁(MultiLock)
,读写锁(ReadWriteLock)
,公平锁(Fair Lock)
,红锁(RedLock)
,信号量(Semaphore)
,可过时性信号量(PermitExpirableSemaphore)
和闭锁(CountDownLatch)
这些实际当中对多线程高并发应用相当重要的基本部件。正是经过实现基于Redis的高阶应用方案,使Redisson成为构建分布式系统的重要工具。java
在提供这些工具的过程中,Redisson普遍的使用了承载于Redis订阅发布功能之上的分布式话题(Topic)
功能。使得即使是在复杂的分布式环境下,Redisson的各个实例仍然具备可以保持相互沟通的能力。在以之为前提下,结合了自身独有的功能完善的分布式工具,Redisson进而提供了像分布式远程服务(Remote Service)
,分布式执行服务(Executor Service)
和分布式调度任务服务(Scheduler Service)
这样适用于不一样场景的分布式服务。使得Redisson成为了一个基于Redis的Java中间件(Middleware)。git
Redisson Node
的出现做为驻内存数据网格的重要特性之一,使Redisson可以独立做为一个任务处理节点,以系统服务的方式运行并自动加入Redisson集群,具有集群节点弹性增减的能力。然而在真正意义上让Redisson发展成为一个完整的驻内存数据网格的,仍是具备将基本上任何复杂、多维结构的对象都能变为分布式对象的分布式实时对象服务(Live Object Service)
,以及与之相结合的,在分布式环境中支持跨节点对象引用(Distributed Object Reference)的功能。这些特点功能使Redisson具有了在分布式环境中,为Java程序提供了堆外空间(Off-Heap Memory)储存对象的能力。github
Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者可以将精力更集中地放在处理业务逻辑上。若是您如今正在使用其余的Redis的Java客户端,但愿Redis命令和Redisson对象匹配列表 可以帮助您轻松的将现有代码迁徙到Redisson框架里来。若是目前Redis的应用场景还仅限于做为缓存使用,您也能够将Redisson轻松的整合到像Spring和Hibernate这样的经常使用框架里。除此外您也能够间接的经过Java缓存标准规范JCache API (JSR-107)接口来使用Redisson。redis
Redisson生而具备的高性能,分布式特性和丰富的结构等特色恰巧与Tomcat这类服务程序对会话管理器(Session Manager)的要求相吻合。利用这样的特色,Redisson专门为Tomcat提供了会话管理器(Tomcat Session Manager)。算法
在此不难看出,Redisson同其余Redis Java客户端有着很大的区别,相比之下其余客户端提供的功能还仅仅停留在做为数据库驱动层面上,好比仅针对Redis提供链接方式,发送命令和处理返回结果等。像上面这些高层次的应用则只能依靠使用者自行实现。spring
Redisson支持Redis 2.8以上版本,支持Java1.6+以上版本。数据库