jedispool.getresource()
时间: 2023-04-16 16:04:10 浏览: 529
jedispool.getResource() 是一个方法,用于从 Jedis 连接池中获取一个 Jedis 实例。这个方法会返回一个 Jedis 对象,可以用来执行 Redis 命令。在使用完 Jedis 实例后,需要调用 Jedis.close() 方法将其归还给连接池。
相关问题
jedispool.getresource()用法
jedispool.getresource()是Jedis连接池中获取Jedis实例的方法。它会从连接池中获取一个可用的Jedis实例,如果连接池中没有可用的实例,则会阻塞等待,直到有可用的实例为止。获取到Jedis实例后,可以通过该实例进行Redis操作。使用完毕后,需要调用Jedis实例的close()方法将实例归还给连接池。
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; } 怎么优化
可以将`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
}
```
阅读全文