一、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 系列文章 👍


被折叠的 条评论
为什么被折叠?



