跳转到内容

Spring Data Redis

Spring Data Redis 将 Lettuce、Jedis、Standalone、Sentinel、Cluster 统一到 RedisConnectionFactory,再由 RedisTemplate 组合连接、序列化、事务与命令操作。

Spring Data Redis 的核心是把不同 Redis 客户端统一成 Spring 资源模型,同时保留命令、事务、序列化和消息订阅的差异。本册追踪:

  1. ConnectionFactory 如何创建、复用和释放底层连接?
  2. RedisTemplate 如何把对象操作翻译成连接回调和序列化命令?
  3. key、value、hash field 和 stream entry 分别由谁序列化?
  4. Pipeline、事务和线程绑定为什么不能混用普通连接?
  5. Pub/Sub 与 Stream 在消费、确认和失败恢复上有什么不同?
项 值
仓库 spring-projects/spring-data-redis
本地路径 E:\source\java\spring\spring-data-redis
分支 main
Commit bc6fa4abeb186521f8cb5ec30e855340a3c5f3a3(2026-08-13)
最近 tag 4.1.0

本册坐标均基于上述 commit,上游演进后行号可能漂移。

  • 统一不同 Redis 驱动的连接、池、Sentinel 和 Cluster 生命周期。
  • 把 Java 对象与 Redis 的 byte[] 协议边界隔离开。
  • 将事务绑定、管道、脚本、Pub/Sub 和 Stream 接入 Spring 生命周期。
模块 职责 关键类
connection 驱动无关连接抽象 RedisConnectionFactory、RedisConnection
connection/lettuce、connection/jedis 驱动适配 LettuceConnectionFactory、JedisConnectionFactory
core 模板、操作对象、事务和脚本 RedisTemplate、RedisConnectionUtils
serializer String、Java、JSON 序列化 RedisSerializer、RedisSerializationContext
listener、stream Pub/Sub 与 Stream 消费 RedisMessageListenerContainer、StreamPollTask
  1. RedisConnectionFactory#getConnection:驱动无关边界。
  2. LettuceConnectionFactory#start / JedisConnectionFactory#start:资源创建。
  3. RedisTemplate#execute:一次命令的完整链路。
  4. RedisConnectionUtils#doGetConnection:线程绑定和事务同步。
  5. RedisSerializer:对象到字节数组的边界。
  6. RedisMessageListenerContainer、StreamPollTask:长连接消费。
对象 对照点
Redis 原生客户端 Spring Data Redis 增加生命周期、序列化和事务同步
Spring JDBC 都用回调屏蔽资源获取与释放
Redisson 本项目偏数据访问,Redisson 偏高层分布式对象