更多SpringBoot3内容请关注我的专栏:《SpringBoot3》
期待您的点赞👍收藏⭐评论✍
重学SpringBoot3-集成Redis(一)
- 1. 项目初始化
- 2. 配置 Redis
- 3. 配置 Redis 序列化
- 4. 操作 Redis 工具类
- 5. 编写 REST 控制器
- 6. 测试 API
- 7. 总结
随着 Spring Boot 3 的发布,开发者可以享受更多的功能提升和性能优化。在现代开发中,Redis 作为高性能的缓存数据库,被广泛应用于提高系统的响应速度和减少数据库的压力。本文将介绍如何通过 Spring Boot 3 来整合 Redis,实现缓存和存储功能。
1. 项目初始化
可以通过 Spring Initializr 创建一个新的 Spring Boot 项目,选择 Spring Boot 3,并设置项目 JDK 为 Java 17。需要添加以下依赖:
- Spring Web:用于构建 REST API。
- Spring Data Redis:用于 Redis 数据库的操作。
- Lettuce:Redis 客户端,Spring Boot 默认支持。
- Spring Boot DevTools(可选):方便开发时进行热部署。
选择好依赖后,点击 “Generate” 下载项目模板。
2. 配置 Redis
首先,需要在本地或远程部署 Redis 服务器。如果使用的是 Docker,可以用以下命令快速启动 Redis,如果是 Redis 集群请参考Docker搭建Redis集群模式。
docker run --name redis -p 6379:6379 -d redis
项目创建后,打开 application.yml
文件,如果是单机版 Redis 服务,添加如下 Redis 配置:
spring:data:redis:host: localhostport: 6379 # Redis 端口password: # 如果有密码可以在这里配置lettuce:pool:max-active: 100 # 最大并发连接数max-idle: 50 # 最大空闲连接数min-idle: 10 # 最小空闲连接数
如果是集群版 Redis 服务,修改为如下 Redis 配置:
spring:data:redis:cluster:nodes:- 127.0.0.1:6379- 127.0.0.2:6379- 127.0.0.3:6379password: # 如果有密码可以在这里配置lettuce:pool:max-active: 100 # 最大并发连接数max-idle: 50 # 最大空闲连接数min-idle: 10 # 最小空闲连接数
3. 配置 Redis 序列化
Spring Boot 默认使用 JdkSerializationRedisSerializer
进行序列化,而我们通常更倾向于使用 StringRedisSerializer
和 Jackson2JsonRedisSerializer
进行更高效的序列化操作,尤其是在处理 JSON 数据时。
我们可以通过配置 RedisTemplate 来使用自定义的序列化器:
package com.coderjia.boot310redis.config;import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;/*** @author CoderJia* @create 2024/10/4 下午 12:43* @Description**/
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 使用String序列化器序列化Keytemplate.setKeySerializer(new StringRedisSerializer());// 使用Jackson2JsonRedisSerializer序列化ValueObjectMapper objectMapper = new ObjectMapper();Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(objectMapper,Object.class);template.setValueSerializer(serializer);return template;}
}
4. 操作 Redis 工具类
接下来,我们可以创建一个简单的工具类来操作 Redis。我们将通过 RedisTemplate
对象进行数据的存取操作。
package com.coderjia.boot310redis.utils;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;import java.util.concurrent.TimeUnit;/*** @author CoderJia* @create 2024/10/4 下午 12:48* @Description**/
@Service
public class RedisUtils {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 保存数据public void save(String key, Object value) {redisTemplate.opsForValue().set(key, value, 10, TimeUnit.MINUTES); // 设置数据的有效期为10分钟}// 获取数据public Object get(String key) {return redisTemplate.opsForValue().get(key);}// 删除数据public void delete(String key) {redisTemplate.delete(key);}
}
5. 编写 REST 控制器
为了展示如何通过 REST API 来操作 Redis,我们可以创建一个简单的控制器,通过 GET 和 POST 请求来存取 Redis 中的数据。
package com.coderjia.boot310redis.demos.web;import com.coderjia.boot310redis.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @author CoderJia*/
@RestController
@RequestMapping("/api/redis")
public class BasicController {@Autowiredprivate RedisUtils redisUtils;// 保存数据@PostMapping("/save")public String save(@RequestParam("key") String key, @RequestParam("value") String value) {redisUtils.save(key, value);return "Data saved successfully!";}// 获取数据@GetMapping("/get")public Object get(@RequestParam("key") String key) {Object value = redisUtils.get(key);return value != null ? value : "Key not found";}// 删除数据@DeleteMapping("/delete")public String delete(@RequestParam("key") String key) {redisUtils.delete(key);return "Data deleted successfully!";}
}
6. 测试 API
启动 Spring Boot 应用程序,使用 curl
或 Postman 测试 API:
保存数据:
curl -X POST "http://localhost:8080/api/redis/save?key=testKey&value=helloRedis"
获取数据:
curl "http://localhost:8080/api/redis/get?key=testKey"
删除数据:
curl -X DELETE "http://localhost:8080/api/redis/delete?key=testKey"
7. 总结
通过本文,相信你已经学会了如何在 Spring Boot 3 和 Java 17 中整合 Redis,并实现基本的存取操作以及缓存功能。使用 Redis 可以大大提升应用的响应速度和性能,尤其在高并发的场景中,使用 Redis 作为缓存是一个非常有效的优化手段。