一、Spring Data 简介
Spring Data 是 Spring 生态中用于 简化数据库访问 的开源框架,核心目标是:
-
统一数据访问 API
-
减少样板代码
-
提高开发效率
主要模块
| 模块 | 用途 |
|---|---|
| Spring Data JDBC | 关系型数据库访问 |
| Spring Data Redis | Redis 访问 |
| Spring Data Elasticsearch | 搜索引擎 |
二、什么是 Spring Data Redis?
Spring Data Redis 是 Spring Data 体系下的一个子模块,专门用于:
✅ 简化 Java 应用对 Redis 的访问
✅ 屏蔽底层 Redis 客户端的差异
✅ 提供统一的 Redis 操作模板
👉 本质:对 Redis 客户端的一层封装
三、为什么使用 RedisTemplate 而不是直接用 Jedis?
这是面试和实际开发中非常常见的问题。
1️⃣ 底层实现的变化(重点)
| Spring Boot 版本 | 默认 Redis 客户端 |
|---|---|
| 1.x | Jedis |
| 2.x+ | Lettuce |
-
Jedis:同步、阻塞 IO(BIO)
-
Lettuce:异步、非阻塞 IO(NIO)
📌 高并发场景下 Lettuce 性能更好
2️⃣ RedisTemplate 的优势
✅ 1. 自动管理连接
-
不需要手动创建 / 释放连接
-
内置连接池管理
✅ 2. 通用序列化机制
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
支持多种序列化方式:
-
String
-
JSON
-
JDK 序列化
-
Kryo(自定义)
✅ 3. 面向对象的操作封装
redisTemplate.opsForValue();
redisTemplate.opsForHash();
redisTemplate.opsForList();
比直接使用 Jedis API 更直观、更安全。
3️⃣ 对比总结
| 对比项 | Jedis | RedisTemplate |
|---|---|---|
| 底层模型 | BIO | NIO(Lettuce) |
| 并发性能 | 一般 | 高 |
| 连接管理 | 手动 | 自动 |
| 序列化 | 需自己处理 | 内置支持 |
| Spring 集成 | 弱 | 强 |
✅ 结论:Spring Boot 2.x 之后,优先使用 RedisTemplate
四、Spring Data Redis 的启动器
在 Spring Boot 项目中,引入依赖非常简单:
✅ Maven 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
✅ 自动生效
引入 starter 后:
-
自动配置
RedisConnectionFactory -
自动创建
RedisTemplate -
支持 YAML / Properties 配置
五、核心对象关系(理解很重要)
RedisTemplate
└── ValueOperations
└── HashOperations
└── ListOperations
└── SetOperations
└── ZSetOperations
六、简单使用示例
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void test() {
redisTemplate.opsForValue().set("name", "zhangsan");
Object name = redisTemplate.opsForValue().get("name");
}
七、总结(适合写在文章结尾)
-
✅ Spring Data Redis 是 Spring 对 Redis 访问的标准方案
-
✅ Spring Boot 2.x 默认使用 Lettuce
-
✅ RedisTemplate 优于直接使用 Jedis
-
✅ 通过 starter 可快速集成
📌 一句话总结:
RedisTemplate 是 Spring 生态下操作 Redis 的最佳实践。
如果你愿意,我还可以帮你继续整理:
-
RedisTemplate 序列化踩坑
-
Redis 缓存注解
@Cacheable实战 -
Redis 分布式锁实现
-
Spring Data Redis 面试题汇总
适合一起发成 CSDN 系列文章 👍