Redisson
- Redisson是一个基于Redis开发的Java驻内存数据网格(In-Memory Data Grid),也是Redis官方推荐的高级Java客户端框架。它并非 Redis本身,而是运行在Redis之上的中间件,核心作用是简化分布式系统中Redis的使用复杂度
适用场景
- 本质上是基于Netty的高性能Redis Java客户端 + 分布式编程框架
- 封装了分布式锁、分布式集合、分布式服务等,支持异步/响应式编程、多节点高可用,让开发者像操作本地对象一样操作Redis
- 适用于分布式锁(秒杀 / 库存)、分布式缓存、会话共享、延迟队列、限流等分布式场景
与基础客户端的差异
- 相比Jedis、Lettuce等基础客户端,Redisson提供了更高层抽象:
bash
复制代码
Jedis:最老牌、最简单的 Redis 基础客户端(轻量、同步、直连)
Lettuce:Spring Boot 默认客户端(异步/响应式、连接池优化、高性能)
Redisson:分布式开发框架(基于Lettuce封装,自带分布式锁/队列/集合等企业级功能),自动感知Redis主从、哨兵、集群节点变化,无需手动处理故障转移
bash
复制代码
分布式锁:内置可重入锁、公平锁、红锁(RedLock),自动处理原子性与锁续期,无需手写Lua脚本
分布式限流:
分布式消息队列:
延迟队列:
分布式集合:封装了RMap、RList、RQueue 等,兼容Java集合接口,直接支持分布式场景
集成 Spring Boot 2.x
与Spring集成
与Spring Boot集成
方法1
xml
复制代码
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.32.0</version>
<!--
该版本号主要由Spring Boot 版本决定:
3.x(3.0~3.3)推荐Redisson Starter版本3.20.0+
2.7.x推荐Redisson Starter版本3.17.6 ~ 3.18.0
2.4.x ~ 2.6.x推荐Redisson Starter版本3.16.0 ~ 3.17.5
-->
</dependency>
yaml
复制代码
spring:
redis:
host: 127.0.0.1
port: 6379
password: # 有密码就填,没有留空
database: 0
- 创建config对象【默认single mode】
java
复制代码
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.password:}")
private String password;
@Value("${spring.redis.database:0}")
private int database;
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://" + host + ":" + port)
.setPassword(password.isEmpty() ? null : password)
.setDatabase(database);
return Redisson.create(config);
}
}
方法2
xml
复制代码
<!-- 只引redisson核心包,注意不能再引入starter -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.32.0</version>
<!--
该版本号主要由Spring Boot 版本决定:
3.0.x ~ 3.1.x推荐org.redisson版本3.20.0 ~ 3.29.x
2.7.x 及以下推荐org.redisson版本3.17.0 ~ 3.18.0
2.3.x 及以下推荐org.redisson版本3.13.0 ~ 3.15.0
-->
</dependency>
yaml
复制代码
spring:
redis:
host: 127.0.0.1
port: 6379
password: # 有密码就填,没有留空
database: 0
java
复制代码
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host:localhost}")
private String host;
@Value("${spring.redis.port:6379}")
private int port;
@Value("${spring.redis.password:}")
private String password;
@Value("${spring.redis.database:0}")
private int database;
@Bean(destroyMethod = "shutdown")
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer()
.setAddress("redis://" + host + ":" + port)
.setPassword(password.isBlank() ? null : password)
.setDatabase(database);
return Redisson.create(config);
}
}
创建 Redisson 实例(3种方式)
- 三种 API 共享底层连接与配置,只需创建一次 RedissonClient,即可衍生出其他模型
- 方式1:Sync and Async API【同步/异步场景,适用于绝大多数业务场景】
java
复制代码
RedissonClient redisson = Redisson.create(config);
- 方式2:Reactive API【响应式 API,适配 Reactive Streams 规范:Spring WebFlex、Project Reactor】
java
复制代码
RedissonReactiveClient redissonReactive = redisson.reactive();
- 方式3:RxJava3 API【适配 RxJava 3 响应式编程框架,适用于 RxJava 的老项目、复杂事件流处理】
java
复制代码
RedissonRxClient redissonRx = redisson.rxJava();
Redisson实例的原生客户端侧缓存对象
- 适用于读多写少、延迟敏感的业务场景,能显著减少 Redis 网络 IO
- 只要某条目发生变更,整个对象都会被失效,生产环境建议切换到高级实现以避免缓存频繁失效
- 必须将 Redisson 连接协议设置为 RESP3
- 当前支持的对象有:
bash
复制代码
RBucket、RStream、RSet
RMap、RScoredSortedSet
RList、RQueue、RDeque
RBlockingQueue、RBlockingDeque
Redisson实例的高级客户端侧缓存对象
- 原生客户端缓存仅按对象粒度生效,无法处理 Map/Hash 这类结构,对此 Redisson 提供了专属的 ** 本地缓存(local cache)** 实现,支持以下结构与框架集成:
Map
JSON Store
JCache
Spring cache
Hibernate cache
MyBatis cache
Quarkus cache
Micronaut cache
Redisson 分布式数据与服务菜单
- Data serialization 数据序列化:将对象转换为可存储 / 传输的字节流,实现跨进程 / 设备的数据交换
- Data partitioning 数据分片:将大数据集拆分到多个节点,提升存储与访问的横向扩展能力
- Common methods 通用方法:分布式操作的基础工具与通用接口封装
- Objects 分布式对象:提供分布式的对象存储与操作(如分布式 Bean、实时对象)
- Counters 分布式计数器:原子化的计数服务,适用于限流、统计等场景
- Collections 分布式集合:兼容 Java 集合 API 的分布式实现(List/Set/Map 等)
- Queues 分布式队列:可靠的消息队列、延迟队列、阻塞队列等
- Locks and synchronizers 分布式锁与同步器:实现跨节点的互斥锁、读写锁、信号量等同步原语
- Publish/subscribe 发布 / 订阅:基于消息的发布订阅模式,实现事件驱动通信
- Services 分布式服务:远程服务调用、任务调度等微服务能力
- Object references 对象引用:分布式环境下的对象引用管理,支持跨节点对象关联