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

相关推荐
都叫我大帅哥6 小时前
Java JJWT 完全指南:从入门到生产级实践
java
前端开发张小七7 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
凡尘——雨落凡尘8 小时前
PHP 线上十大隐形故障复盘:90% 的网站卡顿、502、雪崩,都是这些细节导致的
redis·nginx·php·session
ThsPool8 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
赤壁小虾8 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
青山木10 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
Jul1en_10 小时前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
摇滚侠10 小时前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 管理 Spring Boot 应用 阅读笔记
java·spring boot·笔记
XWalnut10 小时前
SpringBoot快速入门
java·spring boot·后端
前端 贾公子10 小时前
第06章:结构化输出 (上)
java·服务器·前端