推荐使用jedis客户端配合jedispool连接池管理redis连接,需引入jedis依赖(如4.4.3版本),配置maxtotal、minidle等参数,并通过try-with-resources安全获取释放连接,spring中应声明为@bean并设置destroymethod。

在 Java 项目中使用 Redis,推荐通过 Jedis 客户端配合 JedisPool 连接池来管理连接,避免频繁创建销毁物理连接,提升性能和稳定性。
添加 Jedis 依赖(Maven)
在 pom.xml 中引入 Jedis 官方依赖,建议使用较新稳定版本(如 4.4.x 或 5.x,注意 5.x 开始需 JDK 17+):
<dependency><groupid>redis.clients</groupid><artifactid>jedis</artifactid><version>4.4.3</version></dependency>
若项目使用 Spring Boot,也可直接依赖 spring-boot-starter-data-redis(底层默认用 Lettuce,但可切换为 Jedis);如明确需 Jedis,需额外配置并排除 Lettuce。
配置 JedisPool 连接池
通过 JedisPoolConfig 设置连接池参数,再构建 JedisPool 实例。关键参数包括最大连接数、最小空闲连接、超时时间等:
- maxTotal:最大连接数(默认 8),根据并发量调整(如 32–128)
- minIdle:最小空闲连接数(默认 0),设为 2–5 可减少首次获取延迟
- maxWaitMillis:获取连接最大等待时间(默认 -1 即无限等待),建议设为 2000ms 防止线程阻塞
-
testOnCreate / testOnBorrow:开启可校验连接有效性(推荐
testOnBorrow=true)
示例初始化代码:
JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(32); poolConfig.setMinIdle(4); poolConfig.setMaxWaitMillis(2000); poolConfig.setTestOnBorrow(true); JedisPool jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379, 2000, "password");
注意:密码、超时、数据库索引(默认 0)等可通过构造函数或 JedisPoolConfig 组合设置。
安全获取与释放 Jedis 连接
务必使用 try-with-resources 或 try-finally 确保连接归还池中,否则会导致连接泄漏:
try (Jedis jedis = jedisPool.getResource()) {
jedis.set("key", "value");
String value = jedis.get("key");
} // 自动调用 jedis.close(),实际是归还到连接池
不要手动调用 jedis.disconnect() 或 jedis.close() 以外的释放方法;Jedis 实现了 AutoCloseable,close 即归还。
若未用 try-with-resources,必须显式 finally 归还:
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set("key", "hello");
} finally {
if (jedis != null) jedis.close(); // 关键:必须执行
}
Spring 环境下的整合建议
在 Spring 项目中,建议将 JedisPool 声明为 @Bean 并设置 destroy-method="destroy",确保容器关闭时释放资源:
@Bean(destroyMethod = "destroy")
public JedisPool jedisPool() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(32);
return new JedisPool(config, "localhost", 6379, 2000, "pass123");
}
业务类中通过 @Autowired 注入 JedisPool,按需获取连接,避免全局静态单例(不利于测试和多环境隔离)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











