2013-07-30 3 views
2

키를 setOfKeys로 사용하여 memcached 클라이언트에 값 집합을 저장합니다. net.spy.memcached.OperationTimeoutException : 값을 대기중인 시간 초과

Set<String> keys=new HashSet<String>(); 
mMemcachedClient = new MemcachedClient(new BinaryConnectionFactory(), 
       AddrUtil.getAddresses("172.22.65.111:11211 172.22.65.11:11211")); 

public void put(Object key, Object value) throws Result { 

     try { 
      synchronized (mMemcachedClient) { 
       this.keys.add(key.toString()); 

       if(keys.size()==1){ 
        mMemcachedClient.set(String.valueOf(hg.hash("setOfKeys")), 
          7200, keys); 
       } 
       else{ 
        mMemcachedClient.replace(String.valueOf(hg.hash("setOfKeys")), 
          7200, keys); 
       } 
       mMemcachedClient.set(String.valueOf(hg.hash(key.toString())), 
         7200, value); 
      } 
     } catch (Excep`enter code here`tion ex) {`enter code here` 
      mLogger.error(ex.getMessage()); 
      throw new Result("ERROR_PUT_MEMCACHED_INTO_CACHE"); 
     } 
    } 

을 다음과 같이 나는 memcached와의 값을 걸었습니다하지만 캐시에서 setOfKeys를 가져하려고 할 때이 오류를 나에게

net.spy.memcached.OperationTimeoutException: Timeout waiting for value

답변

2

세트를 제공하고의 기능을 다음과 같이 교체 MemcachedClient는 비동기이며 Futures를 반환합니다. 작업이 완료 될 때까지 블록을 가져 오려면 반환 된 객체에서 .get()을 호출해야합니다.

mMemcachedClient.set(String.valueOf(hg.hash("setOfKeys")), 7200, keys).get(); 

작업이 성공적으로 수행되었는지 확인하려면 위 문장의 반환 값도 확인해야합니다.

+0

난 단지 내 지역 mMemcachedClient = 새로운 MemcachedClient로 memcached를 클라이언트에서 서버가있는 경우 (새 BinaryConnectionFactory(), \t \t \t \t AddrUtil.getAddresses를 ("172.22.65.111:11211")); 내가 mMemcachedClient = 새로운 MemcachedClient (새 BinaryConnectionFactory()처럼 서버를 늘리 때 됐었 작동 저놈 시간, \t \t \t \t AddrUtil.getAddresses ("172.22.65.111:11211 172.22.65.11:11211"));.Its는 않습니다 작업. 그것은 나에게 예외를 주었다 net.spy.memcached.OperationTimeoutException : 값을 기다리는 시간 초과. –

+0

telnet으로 172.22.65.11에 연결하고 몇 가지 명령을 보내고 이것이 작동하는지 확인하십시오. 그렇지 않으면 네트워킹 문제가 있거나 해당 컴퓨터에서 memcached가 제대로 작동하지 않습니다. – mikewied

+0

Thanx alot ... 문제는 다른 서버에서 발생했습니다. 서버를 다시 설치하면 아무 것도 수신되지 않습니다. 다시 시도하십시오. –