Lettuce连接和操作Redis服务器
❓ “Lettuce 是什么?它在 Redis 集群架构中处于什么角色?”
✅ 一句话快速解释:
Lettuce 是一个 Java 客户端库,用来连接和操作 Redis 服务器,包括支持单机、哨兵、集群等模式。
它和 Redis 集群服务器之间的关系是:
-
客户端 ↔ 服务端
-
调用者 ↔ 被调用者
-
数据库连接器 ↔ 数据库节点
🧠 更完整的理解
|
角色 |
解释 |
|---|---|
|
Redis 服务器 |
你部署在局域网或云服务器上的 Redis 实例(可能是单机、主从、或集群模式) |
|
Lettuce |
是 Spring Boot 默认使用的 Redis 客户端库,封装了 TCP 连接、命令协议等细节,专门用来操作 Redis |
|
你写的代码 |
通过 Lettuce 发起 Redis 命令,比如 .set(), .get(),最终通过 Lettuce 执行到 Redis |
✅ Lettuce 的核心特点:
|
特点 |
说明 |
|---|---|
|
支持异步 / 同步 / 响应式 |
可配合 Reactor 或异步线程使用 |
|
线程安全 |
默认是共享连接多线程安全 |
|
支持 Redis 集群 |
可以自动发现集群拓扑、读写分离 |
|
Spring Boot 默认支持 |
Spring Boot 2.x+ 默认 Redis 客户端就是 Lettuce(不是 Jedis) |
✅ 在 Redis 集群中,Lettuce 做了什么?
在 Redis 集群模式下(多个 master + slave):
-
✅ Lettuce 会自动连接集群中的节点
-
✅ 它会通过集群 slots 映射判断 key 应该访问哪个节点
-
✅ 如果你启用 ReadFrom.REPLICA_PREFERRED:
-
Lettuce 会优先将读请求路由到从节点(replica)
-
写请求依然发往主节点(master)
-
-
✅ 它还支持自动刷新拓扑结构(适配主从切换)
🧭 所以你可以这样理解:
你写的业务代码
↓
RedisTemplate / StringRedisTemplate
↓
LettuceClient(如 DefaultLettuceConnectionFactory)
↓
自动感知集群结构
↓
发出 Redis 命令到集群节点
✅ 与 Jedis 的区别(顺带提一下)
|
客户端 |
线程模型 |
是否支持集群 |
Spring Boot 默认 |
|---|---|---|---|
|
Jedis |
非线程安全(每线程一个连接) |
是 |
❌(老) |
|
Lettuce |
线程安全(基于 Netty) |
✅ 强力支持 |
✅ 默认推荐 |
✅ 结论总结
✔ Lettuce 是一个 Redis 客户端库,在 Redis 集群中负责管理连接、发现节点、转发命令、读写分离等行为。
它是 Redis 与 Java 应用之间的“桥梁”,而 Redis 集群是被 Lettuce 操控的“目标系统”。
浙公网安备 33010602011771号