什么是 Redisson?
Redisson 是 Redis 官方推荐的、用于 Java 的高级分布式协调客户端库。

它基于 Netty 这一高性能 NIO 框架构建,充分利用了 Redis 键值数据库的诸多优势,在 Java
标准工具包接口的基础上,提供了一系列具备分布式特性的常用工具类。这使得原本用于协调单机多线程并发的工具,获得了协调分布式多机多线程系统的能力,显著降低了设计和开发大规模分布式系统的复杂度。同时,结合其丰富的分布式服务,进一步简化了分布式环境中各组件间的协作。

Redisson 兼容 Redis 2.6+ 和 JDK 1.6+,采用 Apache License 2.0 授权协议。

官方网站:https://redisson.org/
GitHub 仓库:https://github.com/redisson/redisson

主要适用场景
分布式应用开发

分布式缓存实现

分布式会话管理

分布式任务/服务/延迟执行服务

作为功能丰富的 Redis 客户端

核心特性概览
Redisson 功能强大且全面,主要特性包括:

云服务与集群支持:支持 Amazon ElastiCache、Azure Redis Cache 等云托管服务,以及 Redis
Cluster、哨兵(Sentinel)、主从模式,支持自动发现节点与拓扑更新。

连接与线程安全:提供自行管理的弹性异步连接池,所有操作线程安全,支持异步操作与 LUA 脚本。

丰富的分布式对象:

通用对象桶(Object Bucket)、二进制流、地理空间对象桶、BitSet、原子长整型(AtomicLong)、原子双精度(AtomicDouble)。

发布/订阅(Topic)、布隆过滤器(Bloom Filter)、基数估计算法(HyperLogLog)。

完整的分布式集合:

映射(Map)、多值映射(Multimap)、集(Set)、列表(List)。

有序集(SortedSet)、计分排序集、字典排序集。

队列(Queue)、双端队列(Deque)、阻塞队列、有界阻塞队列、延迟队列、优先队列等。

分布式锁与同步器:

可重入锁(ReentrantLock)、公平锁、联锁(MultiLock)、红锁(RedLock)。

读写锁(ReadWriteLock)、信号量(Semaphore)、可过期信号量、闭锁(CountDownLatch)。

分布式服务:

远程服务(RPC)、实时对象(Live Object)服务、执行服务(Executor Service)。

调度任务服务(Scheduler Service)、映射归纳服务(MapReduce)。

强大的生态集成:支持 Spring 框架、Spring Cache、Hibernate Cache、JCache,提供 Tomcat Session Manager 和 Spring Session 集成。

灵活的序列化:支持 Jackson JSON、Avro、Smile、CBOR、MsgPack、Kryo、FST、LZ4、Snappy 及 JDK 序列化。

与 Jedis 的对比
Jedis 是 Redis 的 Java 客户端实现,其 API 基本覆盖了所有 Redis 命令,但功能相对基础。Redisson
则提供了更高级的抽象,专注于分布式数据结构和服务的实现,使得开发者能将精力更集中于业务逻辑,而非底层的连接和序列化细节。

快速开始
Maven 依赖


<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson</artifactId>
   <version>3.5.5</version>
</dependency>


<dependency>
   <groupId>org.redisson</groupId>
   <artifactId>redisson</artifactId>
   <version>2.10.5</version>
</dependency>

基础使用示例

// 1. 创建配置对象
Config config = new Config();
config.useSingleServer().setAddress("redis://127.0.0.1:6379");

// 2. 创建 Redisson 客户端实例
RedissonClient redisson = Redisson.create(config);

// 3. 获取所需的对象或服务
RMap<String, Object> map = redisson.getMap("myMap");
RLock lock = redisson.getLock("myLock");
RExecutorService executor = redisson.getExecutorService("myExecutorService");
// ... 超过30种不同的分布式对象和服务可供使用