Spring Data Redis 详解

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

相关推荐
JAVA面经实录91710 小时前
RabbitMQ全套学习知识手册
java·rabbitmq
我是一颗柠檬10 小时前
【Redis】哨兵机制Day10
数据库·redis·后端·缓存
0xDevNull10 小时前
Java实战面试题(一)
java·开发语言
好家伙VCC10 小时前
动态因子图谱+滚动SHAP重构量化模型可解释性
java·人工智能·重构
椰椰椰耶10 小时前
[SpringCloud][11] Nacos 负载均衡,服务下线、权重配置、同集群优先访问
java·spring cloud·负载均衡
Miss roro10 小时前
通用OA能不能替代专业法务系统?钉钉飞书和律杏法务云的实测对比
java·钉钉·飞书·法律科技·企业诉讼管理·法务管理系统
不是光头 强10 小时前
feign-list-param-crash-cpp
java·数据结构·list
接着奏乐接着舞10 小时前
spring cloud RabbitMQ
spring·spring cloud·rabbitmq
Chase_______10 小时前
【Java基础 | 10】异常处理入门:Throwable、try-catch-finally 与异常调用栈一次讲清
java
努力努力再努力wz10 小时前
【C++高阶数据结构系列】:跳表 SkipList 详解:多层索引、随机晋升与C++ 完整实现(附跳表实现的源码)
开发语言·数据结构·数据库·c++·redis·缓存·skiplist