Springboot Redis
时间: 2025-04-29 08:13:40 浏览: 23
### Spring Boot 整合 Redis 示例教程
#### 添加依赖项
为了使 Spring Boot 项目能够与 Redis 数据库交互,在 `pom.xml` 文件中需加入如下所示的 Maven 依赖:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
```
这一步骤确保应用程序具备访问 Redis 所必需的所有组件[^3]。
#### 配置 Redis 连接参数
接着要设置 Redis 的连接详情,通常是在项目的配置文件 (`application.properties`) 中完成此工作。对于不同版本的 Spring Boot 来说,可以采用相同的属性名来进行基本设定,比如主机地址等:
```properties
spring.redis.host=localhost
spring.redis.port=6379
```
这些选项允许开发者指定目标 Redis 实例的位置以及端口号[^2]。
#### 创建自定义配置类
为了让应用更好地管理同 Redis 的会话,建议构建一个专门负责初始化 `RedisTemplate` 及其关联设施(如连接工厂)的 Java 类。此类不仅简化了后续编码过程中的数据交换逻辑,还提供了灵活性以便于调整内部机制而不影响外部调用方。
```java
@Configuration
public class RedisConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
return new LettuceConnectionFactory();
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
```
上述代码片段展示了如何定制化 `RedisTemplate` 并为其指定了 JSON 序列化的策略,从而解决了可能出现的对象存储问题[^4]。
#### 编写业务逻辑并执行测试
现在有了准备好的工具之后就可以着手开发具体的功能模块了。下面给出了一段简单的例子用来展示怎样利用之前提到过的模板对象向 Redis 存储实体记录,并读取它们出来做进一步处理:
```java
@SpringBootTest
class ApplicationTests {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Test
void contextLoads() throws Exception {
People person = new People("李四", 20);
redisTemplate.opsForValue().set("person_key", person);
System.out.println(redisTemplate.opsForValue().get("person_key"));
}
}
// 假设有一个名为People的POJO类表示一个人的信息
class People {
String name;
int age;
// 构造函数、getter/setter 方法省略...
public People(String name, int age){
this.name=name;
this.age=age;
}
}
```
这段程序先实例化了一个代表个人资料的对象,再将其保存到键为 `"person_key"` 的位置;随后尝试获取该条目并打印至控制台输出流中显示结果。注意这里假设已经正确设置了序列化方式以支持复杂类型的持久化操作。
阅读全文
相关推荐


















