문서의 이전 판입니다!
spymemcached의 대부분의 작업은 비동기로 이루어지는 것으로 보인다.
예를들면 memcachedClient.flush() 같은 경우, flush 직후 바로 memcachedClient.shutdown()을 해버리면 flush가 안된 상태로 끝나버린다.
이는 다음과 같이 해야 올바로 flush가 된다.
final OperationFuture<Boolean> flush = memcachedClient.flush(); while(!flush.isDone()) { log.debug("Waiting for flushing."); TimeUnit.MILLISECONDS.sleep(20); // 잠시 기다려줌. }
이 처럼 많은 Operation들이 비동기로 이루어지므로 동기가 중요한 요소에서는 Future를 올바르게 조정해야 한다.
<bean id="memcachedClient" class="net.spy.memcached.spring.MemcachedClientFactoryBean"> <property name="servers" value="host1:11211,host2:11211,host3:11211"/> <property name="protocol" value="BINARY"/> <property name="transcoder"> <bean class="net.spy.memcached.transcoders.SerializingTranscoder"> <property name="compressionThreshold" value="1024"/> </bean> </property> <property name="opTimeout" value="1000"/> <property name="timeoutExceptionThreshold" value="1998"/> <property name="hashAlg" value="KETAMA_HASH"/> <property name="locatorType" value="CONSISTENT"/> <property name="failureMode" value="Redistribute"/> <property name="useNagleAlgorithm" value="false"/> </bean>
net.spy.log.LoggerImpl 값을 원하는 로거 클래스로 지정해야 한다.net.spy.compat.log.Logger 를 구현해야 한다.net.spy.memcached.compat.log.SLF4JLoggerLong.MAX_VALUE(9223372036854775807)에 도달할 경우 문제가 발생할 수 있다.-9223372036854775808 로 계속된다.-1을 리턴한다. incr을 실행할 때마다 계속 예외가 발생하며 계속해서 -1만 리턴한다.incr/decr 메소드의 by 인자를 0 으로 주며 값 변경 없이 읽기만 수행한다.