【发布时间】:2017-06-01 12:42:39
【问题描述】:
这是我的JedisFactory
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
class JedisFactory {
private static JedisPool jedisPool;
private static JedisFactory instance;
public JedisFactory() {
jedisPool = new JedisPool(getPoolConfig(), "localhost");
}
private JedisPoolConfig getPoolConfig() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
//poolConfig.setTestOnBorrow(true);
//poolConfig.setTestOnReturn(true);
poolConfig.setMaxIdle(2);
// Tests whether connections are dead during idle periods
//poolConfig.setTestWhileIdle(true);
poolConfig.setMaxTotal(2);
//poolConfig.setMaxWaitMillis(120000);
return poolConfig;
}
public JedisPool getJedisPool() {
System.out.println("get pool");
return jedisPool;
}
public static JedisFactory getInstance() {
if (instance == null) {
instance = new JedisFactory();
}
return instance;
}
}
这是用法:
public static void del(String key) {
Jedis jedis = JedisFactory.getInstance().getJedisPool().getResource();
try {
jedis.del(key);
} finally {
JedisFactory.getInstance().getJedisPool().returnResource(jedis);
}
}
public static String ping() {
Jedis jedis = JedisFactory.getInstance().getJedisPool().getResource();
try {
return jedis.ping();
} finally {
JedisFactory.getInstance().getJedisPool().returnResource(jedis);
}
}
public static void clear() {
Jedis jedis = JedisFactory.getInstance().getJedisPool().getResource();
try {
jedis.flushAll();
} finally {
JedisFactory.getInstance().getJedisPool().returnResource(jedis);
}
}
因此,对于每个操作,我都必须输入大量样板代码。如何避免?
【问题讨论】:
标签: java redis connection-pooling jedis