Redis Java 客户端选型与 SpringBoot 集成指南
1. 概述
1.1 Redis 客户端的通用性
Redis 支持多语言客户端(Java/C/PHP 等),不同语言通过对应客户端库与 Redis 服务端交互,而非仅用 redis-cli 命令行。
1.2 Java 客户端核心选型
| 架构层 | 具体实现 |
|---|---|
| 用户 | 你写的 Java/SpringBoot 业务代码 |
| Client 层 | Jedis/Lettuce/Redisson(Java 客户端) |
| 引擎层 | Redis 服务端(redis-server) |
-
官方推荐
- 基础操作:Jedis、Lettuce(轻量级 Java 客户端,满足常规 Redis 命令调用);
- 高级功能:Redisson(封装了分布式锁、分布式集合等高级特性,企业中用于复杂场景)。
-
企业主流现状
- 早期项目:Jedis 占比最高(轻量、易用,学习成本低);
- 现阶段主流(SpringBoot 2.x+):Lettuce(SpringBoot 默认集成,支持异步 / 响应式、线程安全,连接池性能更优);
- 复杂分布式场景:Redisson(弥补 Jedis/Lettuce 高级功能不足,如分布式锁、延迟队列等)。
-
核心说明
- Jedis:开源项目(托管于 GitHub),轻量级但单线程非线程安全,需配合连接池使用;
- Lettuce:基于 Netty 实现,天生线程安全,支持多线程共享连接,无需额外池化配置即可高性能使用;
- 三者定位:Jedis/Lettuce 聚焦基础 Redis 操作,Redisson 聚焦分布式场景的高级封装。
1.3 Jedis 的介绍
Jedis 是 Java 语言的 Redis 客户端(对应 client-引擎架构的 Client 层),和 redis-cli 功能一致,只是使用场景不同。
2. Spring 项目里用 Jedis 连接 Redis
- 依赖 jedis 和 commons-pool 包,需要在 pom.xml 中引入坐标。
- 两种连接方式
- 单实例连接:直接创建 Jedis 对象,指定 Redis 服务端 IP 和端口,用完后关闭连接。缺点:每次请求都新建连接,性能差,资源浪费。
- 连接池连接(推荐):通过 JedisPool 管理连接,复用连接,提升性能。配置 JedisPoolConfig 来设置最大连接数、最大空闲数等参数。
3. SpringBoot 连接 Redis
SpringBoot 对 Redis 连接做了深度封装,比传统 Spring 更简洁。
3.1 引入依赖
SpringBoot 提供了 spring-boot-starter-data-redis 依赖,默认集成了 Lettuce 客户端(替代了 Jedis,性能更优、线程安全),默认是连接池的方式。
<dependency>
<groupId>org.springframework.boot
spring-boot-starter-data-redis


