【Redis系列】Java 操作 Redis 的主流客户端(2025-2026 推荐方案)
目前(2025-2026 年)Java 生态操作 Redis 最主流的几种客户端,按实际生产使用占比和社区活跃度排序如下:
| 排名 | 客户端名称 | 当前主流版本 | 是否推荐新项目 | 优点简述 | 缺点 / 坑点 | 典型使用场景 |
|---|---|---|---|---|---|---|
| 1 | Lettuce | 6.3.x / 6.4.x | ★★★★★ | Redis 官方推荐、支持响应式、线程安全、连接池优秀 | 学习曲线稍陡,配置项较多 | Spring Boot 3.x 默认、微服务首选 |
| 2 | Jedis | 5.2.x / 5.3.x | ★★★☆☆ | API 最简单、最直观、文档最丰富 | 非线程安全(需池化)、响应式支持差 | 老项目、快速原型、教学场景 |
| 3 | Redisson | 3.32.x / 3.33.x | ★★★★☆ | 功能最丰富(分布式锁、Map、Set、延迟队列等) | 包体积较大、侵入性强、学习成本高 | 需要分布式数据结构的业务 |
| 4 | spring-data-redis | 3.2.x / 3.3.x | ★★★★★ | 与 Spring 生态无缝集成、抽象层高 | 底层还是 Lettuce 或 Jedis,性能取决于底层 | 99% Spring Boot 项目 |
| 5 | lettuce + spring-data-redis | — | ★★★★★ | 目前最推荐的组合 | — | Spring Boot 官方推荐组合 |
2025-2026 年最推荐的组合(强烈建议)
Spring Boot 项目(绝大多数场景)
依赖:
spring-boot-starter-data-redis → 默认使用 Lettuce
# 如果你非常怀念 Jedis 的风格,可以显式切换
spring-boot-starter-data-redis + jedis(排除 lettuce)
非 Spring 项目 / 底层追求极致性能
推荐直接使用:Lettuce 6.3+(原生)
其次:Jedis 5.2+(加连接池)
一、最推荐写法:Spring Boot + Lettuce(2025-2026 主流)
# application.yml
spring:
data:
redis:
host: 127.0.0.1
port: 6379
# password: 123456
database: 0
timeout: 2000ms
lettuce:
pool:
max-active: 8 # 连接池最大连接数
max-idle: 8
min-idle: 0
max-wait: -1ms # -1 表示不限制等待
常用操作模板(推荐使用 RedisTemplate 或 StringRedisTemplate)
@Service
public class RedisService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate; // 专门处理 String 类型
// ------------------ 字符串 ------------------
public void set(String key, Object value, long timeout, TimeUnit unit) {
redisTemplate.opsForValue().set(key, value, timeout, unit);
}
public Object get(String key) {
return redisTemplate.opsForValue().get(key);
}
// ------------------ Hash ------------------
public void hSet(String key, String field, Object value) {
redisTemplate.opsForHash().put(key, field, value);
}
public Object hGet(String key, String field) {
return redisTemplate.opsForHash().get(key, field);
}
// ------------------ 分布式锁(推荐使用 Redisson) ------------------
// 或自己基于 setIfAbsent + Lua 脚本实现
}
二、纯 Lettuce 原生使用(非 Spring 项目)
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.4.0.RELEASE</version>
</dependency>
// 最推荐:使用连接池
RedisClient redisClient = RedisClient.create("redis://127.0.0.1:6379");
StatefulRedisConnection<String, String> connection = redisClient.connect();
RedisCommands<String, String> syncCommands = connection.sync();
syncCommands.set("key", "value");
syncCommands.expire("key", 60);
String value = syncCommands.get("key");
connection.close();
redisClient.shutdown();
异步 / 响应式写法(Lettuce 最大优势)
RedisAsyncCommands<String, String> async = connection.async();
RedisFuture<String> future = async.get("key");
future.thenAccept(value -> System.out.println(value));
三、Redisson 典型使用场景(当你需要分布式数据结构时)
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.33.0</version>
</dependency>
@Autowired
private RedissonClient redisson;
// 分布式锁
RLock lock = redisson.getLock("myLock");
lock.lock(10, TimeUnit.SECONDS); // 自动续期
try {
// 业务逻辑
} finally {
lock.unlock();
}
// 分布式 Map
RMap<String, Object> map = redisson.getMap("userCache");
map.put("user:1001", user);
// 延迟队列
RBlockingQueue<String> queue = redisson.getBlockingQueue("delayQueue");
RDelayedQueue<String> delayedQueue = redisson.getDelayedQueue(queue);
delayedQueue.offer("task", 30, TimeUnit.SECONDS); // 30秒后进入队列
四、2025-2026 年最常见的选型决策树
你是否使用 Spring Boot?
├── 是 ──> 直接使用 spring-boot-starter-data-redis(默认 Lettuce)
│
└── 否
├── 需要分布式锁、Map、Set、延迟队列、布隆过滤器等高级结构?
│ └── 是 ──> 首选 Redisson
│
└── 只做基本的 get/set、incr、list、hash?
├── 对性能、响应式有较高要求? ──> Lettuce 原生
└── 追求代码最简单、最熟悉? ──> Jedis + 连接池
五、总结一句话建议(2025-2026)
Spring Boot 项目 → spring-boot-starter-data-redis(Lettuce)
需要分布式数据结构 → Redisson
纯底层追求极致性能/响应式 → Lettuce 原生
老项目 / 追求最简单 API → Jedis(加连接池)
有哪种具体场景你正在纠结用哪个客户端?
(比如 Spring Boot + 集群、响应式 WebFlux、分布式锁、缓存穿透防线等)
告诉我,我可以给你更针对性的代码示例和配置。