springboot项目redis配置
时间: 2025-05-19 20:06:12 浏览: 37
### Spring Boot Redis 配置教程及示例
#### 一、引入依赖
为了在 Spring Boot 项目中集成 Redis,首先需要在 `pom.xml` 文件中添加必要的 Maven 依赖项。以下是常用的依赖配置:
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 如果使用 lettuce 连接池 -->
<dependency>
<groupId>io.lettuce.core</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
```
这些依赖会自动导入所需的库文件并完成基础设置[^1]。
---
#### 二、基本配置
在项目的 `application.properties` 或 `application.yml` 文件中定义 Redis 的连接属性。以下是一个典型的 YAML 配置示例:
```yaml
spring:
redis:
host: localhost # Redis服务器地址
port: 6379 # Redis端口号,默认为6379
password: # 密码(如果设置了密码)
timeout: 5000ms # 超时时间
lettuce:
pool:
max-active: 8 # 最大活跃连接数
max-idle: 8 # 最大空闲连接数
min-idle: 0 # 最小空闲连接数
```
此部分用于指定 Redis 实例的基本信息以及连接池的相关参数[^2]。
---
#### 三、启用缓存功能
要在 Spring Boot 应用程序中利用 Redis 提供的分布式缓存能力,则需通过注解方式开启全局缓存支持。具体实现如下所示:
```java
@SpringBootApplication
@EnableCaching // 启用缓存机制
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
上述代码片段展示了如何在一个标准的 Spring Boot 启动类上激活缓存特性。
---
#### 四、高级场景——主从模式与哨兵模式的支持
对于生产环境而言,仅依靠单机版 Redis 可能无法满足高可用需求。因此可以考虑采用 Redis 主从复制或者 Sentinel 哨兵架构来增强系统的健壮性和扩展性。
##### (1)主从模式的手动配置
由于 Spring Boot 并未提供针对 Redis Master-Slave 自动化的解决方案,所以开发者必须自行调整客户端行为逻辑以适配多节点部署方案。下面给出了一种基于 LettuceConnectionFactories 构建自定义工厂实例的方法:
```java
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName("localhost");
config.setPort(6379);
LettuceClientConfiguration clientConfig =
LettucePoolingClientConfiguration.builder().build();
return new LettuceConnectionFactory(config, clientConfig);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(factory);
return template;
}
}
```
此处演示了如何定制化一个适用于复杂网络拓扑结构下的持久层组件接口[^3]。
##### (2)哨兵模式的具体实践
当面对更复杂的集群管理挑战时,可借助 Redis Sentinel 来监控多个 Redis Server 的状态变化情况,并动态切换至健康的主节点继续工作负载分配任务。下面是关于该主题的一个简单例子说明文档内容摘要:
```java
@Configuration
public class RedisSentinelConfig {
@Bean
public RedisSentinelConfiguration sentinelConfig(){
RedisSentinelConfiguration config = new RedisSentinelConfiguration()
.master("mymaster") // 设置 master 名称
.sentinel("127.0.0.1", 26379); // 添加第一个哨兵地址
config.sentinel("127.0.0.1", 26380); // 添加第二个哨兵地址 (如果有更多的话)
return config;
}
@Bean
public RedisConnectionFactory connectionFactory(RedisSentinelConfiguration sentinelConf){
return new LettuceConnectionFactory(sentinelConf);
}
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new JdkSerializationRedisSerializer());
template.setHashValueSerializer(new JdkSerializationRedisSerializer());
template.setDefaultSerializer(new JdkSerializationRedisSerializer());
template.setConnectionFactory(factory);
return template;
}
}
```
这段脚本解释了怎样构建一套完整的 Redis Sentinel 支持体系,从而提高整个应用程序的服务质量水平[^4]。
---
#### 五、总结
以上就是围绕 Spring Boot 和 Redis 结合使用的全面指南,涵盖了从简单的入门级操作到深入探讨企业级应用场景等多个层面的知识要点。希望可以帮助读者更好地理解和掌握这一关键技术组合的实际运用方法论。
阅读全文
相关推荐

















