Spring Boot 整合 Redis 使用教程

embedded/2025/3/19 6:10:27/

Redis 是一种高性能的键值存储数据库,常用于缓存、会话管理和消息队列等场景。Spring Boot 通过 Spring Data Redis 提供了简洁的整合方式。


1. 环境准备

1.1 添加依赖

pom.xml 中添加 Redis 依赖(Spring Boot 3.x):

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 若使用 Jedis 客户端 -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>
</dependency>

2. 配置 Redis 连接

application.properties 中配置 Redis 连接信息:

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=  # 若无密码则留空
spring.data.redis.database=0

3. 使用 RedisTemplate 操作 Redis

3.1 注入 RedisTemplate

Spring Boot 自动配置了 RedisTemplate,可直接注入使用:

java">@Autowired
private RedisTemplate<String, Object> redisTemplate;

3.2 基础操作示例

java">// 存储字符串
redisTemplate.opsForValue().set("name", "Alice");// 获取字符串
String name = (String) redisTemplate.opsForValue().get("name");
System.out.println("Name: " + name); // 输出: Alice// 设置过期时间(30秒)
redisTemplate.expire("name", 30, TimeUnit.SECONDS);// 删除键
redisTemplate.delete("name");

3.3 存储对象(JSON序列化)

默认序列化可能存在问题,建议配置自定义序列化(在配置类中添加):

java">@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(factory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}

存储自定义对象:

java">User user = new User("Bob", 25);
redisTemplate.opsForValue().set("user:1", user);
User cachedUser = (User) redisTemplate.opsForValue().get("user:1");

4. 使用 Spring Cache 注解

4.1 启用缓存

在启动类添加 @EnableCaching

java">@SpringBootApplication
@EnableCaching
public class Application { ... }

4.2 缓存方法结果

java">@Service
public class UserService {@Cacheable(value = "userCache", key = "#id")public User getUserById(String id) {// 模拟数据库查询return new User(id, "CacheUser", 30);}@CacheEvict(value = "userCache", key = "#id")public void deleteUser(String id) {// 删除数据库记录}
}

5. 测试 Redis 连接

创建一个简单的测试类:

java">@Component
public class RedisTest implements CommandLineRunner {@Autowiredprivate RedisTemplate<String, String> redisTemplate;@Overridepublic void run(String... args) {redisTemplate.opsForValue().set("testKey", "Hello Redis!");String value = redisTemplate.opsForValue().get("testKey");System.out.println("Redis测试值: " + value); // 输出: Hello Redis!}
}

总结

通过以上步骤即可在 Spring Boot 中快速使用 Redis。关键点:

  1. 配置 Redis 连接信息
  2. 使用 RedisTemplate 进行 CRUD 操作
  3. 通过 @Cacheable 实现声明式缓存

确保本地已启动 Redis 服务(可通过 redis-server 命令启动)。完整代码可参考 Spring Data Redis 官方文档。


希望本教程能帮助您快速上手 Redis 整合!如有问题欢迎在评论区留言。


http://www.ppmy.cn/embedded/173776.html

相关文章

波士顿咨询X大型制造业数字化转型战略规划项目(98页PPT)(文末有下载方式)

资料解读&#xff1a;波士顿咨询 X 大型制造业数字化转型战略规划项目&#xff08;98 页&#xff09; 详细资料请看本解读文章的最后内容。在当下数字化浪潮席卷全球的时代&#xff0c;制造业作为国家经济发展的重要支柱&#xff0c;其数字化转型进程备受关注。这份由波士顿咨…

使用Ajax技术进行动态网页的爬虫(pycharm)

Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;技术在现代Web开发中广泛应用。 它允许网页在不重新加载整个页面的情况下&#xff0c;通过JavaScript与服务器进行异步通信&#xff0c;动态更新部分内容。这种技术对爬虫的功能和作用产生了显著影响&#xff0c;…

杂谈:前端 UI 框架和 UI 组件库的区别

前端技术的概念比较多&#xff0c;容易搞混。 比如有些新人不理解前端 UI 框架和 UI 组件库的区别&#xff0c;今天我来简单说明一下两者的区别。 两者的区别 新人会搞混这两个概念&#xff0c;主要是因为在有些话语中&#xff0c;它们是同等的地位&#xff0c;比如下面这两…

五、AIGC大模型_07ChromaDB与RAG实战

0、向量数据库概述 向量数据库是一种新型的数据库&#xff0c;专门用于存储和检索高维向量数据&#xff0c;它结合了传统数据库&#xff08;如关系型、文档型&#xff09;的特点&#xff0c;并针对向量数据的特性进行了优化&#xff0c;主要用于支持语义检索、推荐系统、机器学…

linux安装配置rabbitmq

环境&#xff1a;centos7.6 1.下载安装Erlang https://www.erlang.org/patches/otp-26.2.5https://www.erlang.org/patches/otp-26.2.5 1.1 确认所需Erlang版本 Erlang与rabbitmq版本对应&#xff1a; Erlang Version Requirements | RabbitMQ 我这里选择最新版rabbitmq&a…

使用Mybatis 连接数据库 项目示例

建一个使用 MyBatis 连接数据库的项目涉及多个步骤。以下是一个简单的示例&#xff0c;展示如何创建一个 Maven 项目&#xff0c;配置 MyBatis&#xff0c;并编写相关的类、方法和测试用例 1.创建Maven项目 首先&#xff0c;创建一个 Maven 项目。你可以使用 IDE&#xff08;…

Day19:把数字翻译成字符串

现有一串神秘的密文 ciphertext&#xff0c;经调查&#xff0c;密文的特点和规则如下&#xff1a; 密文由非负整数组成数字 0-25 分别对应字母 a-z 请根据上述规则将密文 ciphertext 解密为字母&#xff0c;并返回共有多少种解密结果。 LCR 165. 解密数字 - 力扣&#xff08…

从零开始使用 **Taki + Node.js** 实现动态网页转静态网站的完整代码方案

以下是从零开始使用 Taki Node.js 实现动态网页转静态网站的完整代码方案&#xff0c;包含预渲染、自动化构建、静态托管及优化功能&#xff1a; 一、环境准备 1. 初始化项目 mkdir static-site && cd static-site npm init -y2. 安装依赖 npm install taki expre…