Redis客户端框架-Redisson

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

  • 配置pom
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>
  • 配置YML
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

  • 配置pom
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>
  • 配置YML
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 对象引用:分布式环境下的对象引用管理,支持跨节点对象关联
相关推荐
神龙斗士2402 小时前
MySQL在Navicat中 库的操作 表的操作
数据库·mysql
攒了一袋星辰2 小时前
10万级用户数据日更与定向推送系统的可靠性设计
java·数据库·算法
chushiyunen2 小时前
lua脚本笔记、redis使用lua解锁
redis·笔记·lua
弘毅 失败的 mian2 小时前
嵌入式系统观
数据库·经验分享·笔记·物联网·嵌入式
深蓝轨迹2 小时前
Redis+Lua实现秒杀优化
数据库·redis·lua
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day7】
开发语言·jvm·数据库·c++·蓝桥杯
色空大师2 小时前
网站搭建实操(二)后台管理(1)登录
java·linux·数据库·搭建网站·论坛
ShineWinsu2 小时前
MySQL安全加固十大硬核操作:硬核防护指南
数据库·mysql·安全
骑龙赶鸭2 小时前
mysql binlog中QUERY_EVENT的status_var结构
数据库·mysql