springboot的redis连接池
时间: 2025-05-05 09:07:44 浏览: 26
<<
Spring Boot 中使用 Redis 连接池通常是基于 `lettuce` 或者 `jedis` 客户端实现的,默认情况下 Spring Boot 使用的是 Lettuce(从 2.x 版本开始)。Redis 连接池的主要目的是为了管理与 Redis 的连接,避免每次请求都创建和销毁新的连接,从而提升性能并减少资源消耗。
### 如何配置 Redis 连接池?
#### 方法一:直接通过 `application.properties` 配置文件
```properties
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器端口
spring.redis.port=6379
# 设置最大空闲连接数
spring.redis.lettuce.pool.max-idle=5
# 设置最小空闲连接数
spring.redis.lettuce.pool.min-idle=0
# 设置最大连接数
spring.redis.lettuce.pool.max-active=8
# 最大等待时间
spring.redis.lettuce.pool.max-wait=-1ms
```
以上配置项中:
- **max-idle**:控制池中的空闲连接的最大数量。
- **min-idle**:控制池中的最低空闲连接的数量。
- **max-active**:设置同时活动连接的最大数目。
- **max-wait**:当池用完时,连接获取的最大等待时间。如果为 `-1ms` 表示无限期等待。
如果你仍然想使用 Jedis,则可以将依赖替换为 jedis,并调整相应的属性名称到 `spring.redis.jedis.*` 命名空间下。
#### 方法二:自定义配置类
你可以手动定制更复杂的 Redis 池参数,比如以下是一个基于 Java Config 的例子:
```java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import io.lettuce.core.ClientOptions;
@Configuration
public class RedisConfig {
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
// 配置 Redis 单机模式 (也可以修改为集群模式)
RedisStandaloneConfiguration standaloneConf = new RedisStandaloneConfiguration("localhost", 6379);
// 自定义 lettuce pool 参数
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.clientOptions(ClientOptions.builder().disconnectedBehavior(ClientOptions.DisconnectedBehavior.REJECT_COMMANDS).build())
.build();
return new LettuceConnectionFactory(standaloneConf, clientConfig);
}
}
```
此外还可以引入 Apache Commons Pool 来进一步增强对连接池的支持:
```xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
```
然后可以通过 `GenericObjectPoolConfig` 对其进行详细配置:
```java
@Bean
public GenericObjectPoolConfig<?> genericObjectPoolConfig(){
var config = new GenericObjectPoolConfig<>();
config.setMaxTotal(10); // 总共可用连接数限制为 10
config.setMinIdle(5); // 至少保持 5个闲置链接不被回收
return config;
}
```
最后将其注入到 Redis 配置工厂即可生效.
---
### 解释:
1. 在分布式系统架构设计里,缓存服务是非常重要的一环,而 Redis 是最流行的内存数据库之一;
2. 访问频率高的业务场景通常会对后端存储带来压力,这时就需要借助像 Redis 这样的中间件来缓解;
3. 同样由于频繁访问造成过多线程阻塞、上下文切换等问题也需要合理利用连接池技术去优化性能表现;
因此正确地配置好 Redis 连接池对于保证应用稳定性和提高吞吐量至关重要。
阅读全文
相关推荐




















