我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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 操控的“目标系统”。

posted on 2025-05-08 13:42  我就是奇迹  阅读(142)  评论(0)    收藏  举报