나는 redis 서버에 대한 연결을 관리하기 위해 jedis 풀을 사용하고 있습니다. 내 예제 코드는 다음과 같이Jedis 풀은 어떻게 작동합니까?
public Set<String> getTopArticleList(int start, int end) {
Set<String> list = null;
Jedis j = JedisFactory.getInstance().getJedisPool().getResource();
Pipeline pipe = j.pipelined();
try {
// do stuff with redis
pipe.sync();
} catch (JedisConnectionException jex) {
JedisFactory.getInstance().getJedisPool().returnBrokenResource(j);
} finally {
JedisFactory.getInstance().getJedisPool().returnResource(j);
}
return list;
}
그리고 코드는 문제는 제한 연결 수에 도달 한 후, 웹이 더 이상 액세스 할 수 없다는 것입니다 jedis가
class JedisFactory {
private static JedisPool jedisPool;
public JedisFactory() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
jedisPool = new JedisPool(
poolConfig,
RedisDBConfig.HOST,
RedisDBConfig.PORT,
RedisDBConfig.TIMEOUT,
RedisDBConfig.PASSWORD
);
}
public JedisPool getJedisPool() {
return jedisPool;
}
public static JedisFactory getInstance() {
if (instance == null) {
instance = new JedisFactory();
}
return instance;
}
수영장 검색 할 수 있습니다. 내가 뭔가 잘못하고 있는거야?
당신은 JedisFactory의 전체 코드를 추가 할 수 있습니까? 특히 getInstance() impl과 getJedisPool()? – zenbeni
JedisFactory의 전체 코드를 추가했습니다. – ipkiss
2 개 이상의 스레드를 사용합니까? 멀티 스레딩 문제 일 수 있습니까? – zenbeni