public Jedis getJedis() { Jedis jedis = new Jedis(); JedisPool jedisPool = new JedisPool(new JedisPoolConfig(), redisUrl.split(":")[0], Integer.valueOf(redisUrl.split(":")[1]), 36000, redisPassword, 8); jedis = jedisPool.getResource(); return jedis; } 怎么优化
时间: 2023-12-10 21:03:34 浏览: 77
可以将`JedisPool`对象创建放到类的初始化方法中,避免每次调用`getJedis()`方法时都创建一个新的`JedisPool`对象。此外,可以将`Jedis`对象归还给连接池,避免资源浪费。
以下是优化后的代码:
```java
private JedisPool jedisPool;
public void init() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(8);
poolConfig.setMaxIdle(8);
poolConfig.setMinIdle(0);
poolConfig.setMaxWaitMillis(36000);
jedisPool = new JedisPool(poolConfig, redisUrl.split(":")[0], Integer.valueOf(redisUrl.split(":")[1]), 36000, redisPassword, 8);
}
public Jedis getJedis() {
Jedis jedis = jedisPool.getResource();
return jedis;
}
public void close(Jedis jedis) {
if (jedis != null) {
jedis.close();
}
}
```
在使用完`Jedis`对象后,需要手动调用`close()`方法将其归还给连接池。如果使用try-with-resources语法,可以自动调用`close()`方法,避免忘记归还`Jedis`对象:
```java
try (Jedis jedis = jedisPool.getResource()) {
// do something with jedis
} catch (JedisException e) {
// handle exception
}
```
阅读全文