介绍
Lettuce 是一款基于 Netty 的高性能 Redis 客户端,支持同步、异步、响应式操作模式,对 Redis 的各种特性(如集群、哨兵、流、ACL 等)有完善支持,尤其适合高并发、分布式场景。
Lettuce 凭借其高性能和丰富的特性,成为 Java 生态中操作 Redis 的首选客户端之一,尤其适合高并发、分布式系统场景。
应用
spring-data-redis的驱动包替换为Lettuce
核心特性
多编程模型支持
- 同步操作:通过
RedisCommands执行阻塞式命令。 - 异步操作:通过
AsyncRedisCommands执行非阻塞命令,返回CompletableFuture。 - 响应式操作:通过
ReactiveRedisCommands支持响应式编程(适配 RxJava、Project Reactor)。
- 同步操作:通过
高级特性支持
- 兼容 Redis 6+ 的 ACL 权限控制、SSL 加密。
- 支持 Redis 集群(自动分片、故障转移)、哨兵模式、主从复制。
- 支持 Stream 数据结构(消息队列功能)、Lua 脚本、管道(Pipeline)等。
线程安全与高效性
- 基于 Netty 的事件驱动模型,单连接可支持多线程并发操作(无需为每个线程创建连接)。
- 内置连接池管理(可结合
commons-pool2),减少连接创建开销。
核心组件
RedisClient:Redis 客户端入口,负责创建连接。StatefulRedisConnection:保持与 Redis 服务器的长连接,线程安全,可共享。RedisCommands:同步命令接口(如set、get)。AsyncRedisCommands:异步命令接口(返回CompletableFuture)。ReactiveRedisCommands:响应式命令接口(返回Mono/Flux)。
注意事项
- 线程安全:
StatefulRedisConnection是线程安全的,可在多线程间共享,无需频繁创建。 - 资源释放:
RedisClient和StatefulRedisConnection需在使用后关闭(推荐 try-with-resources 语法)。 - 版本兼容:Lettuce 6.x 支持 Redis 6+ 的所有特性,若使用旧版 Redis,需选择对应兼容的 Lettuce 版本。
依赖
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.2.4.RELEASE</version> <!-- 稳定版本,支持 Redis 6+ -->
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>