사용자 도구

사이트 도구


java:simple-spring-memcached

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:simple-spring-memcached [2013/10/07 22:58]
kwon37xi
java:simple-spring-memcached [2015/04/17 16:58] (현재)
kwon37xi [주의]
줄 4: 줄 4:
   * [[:memcached|memcached]]의 Multi Get 기능을 Annotation으로 지원해준다.   * [[:memcached|memcached]]의 Multi Get 기능을 Annotation으로 지원해준다.
   * Spring Cache Abstraction도 함께 지원해준다.   * Spring Cache Abstraction도 함께 지원해준다.
 +
 +===== 설정 =====
 +  * ''@EnableAspectJAutoProxy'' 혹은 XML의 경우 ''<aop:aspectj-autoproxy />''가 필수적으로 돼 있어야 한다.
 +
 +===== Cache Name을 key Prefix로 사용하기 =====
 +  * SSM은 하나의 Memcached 서버군에서 여러 Cache Name을 사용할 경우에도 기본적으로 CacheName을 Key의 prefix로 붙이지 않아서, 여러 CacheName에서 동일한 Cache Key를 사용할 경우 키 충돌이 발생할 수 있다.
 +  * 해당 문제는 특히 [[springframework:cacheabstraction|Spring Cacheh Abstraction]]과 함께 사용할 경우 심각한 키 충돌을 일으키게 된다.
 +  * [[https://code.google.com/p/simple-spring-memcached/issues/detail?id=21&can=1&colspec=Stars%20ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary|3.3.0 패치]]에 따라 이 이후부터 ''CacheConfiguration.useNameAsKeyPrefix'' 프라퍼티를 ''true''로 설정하여 해결 가능해졌다.<code java>
 +@Bean
 +public CacheConfiguration coupangCacheConfiguration() {
 +    CacheConfiguration cacheConfiguration = new CacheConfiguration();
 +    cacheConfiguration.setConsistentHashing(true);
 +    cacheConfiguration.setUseBinaryProtocol(true);
 +    cacheConfiguration.setOperationTimeout(operationTimeout);
 +
 +    // Cache Name Key Prefix 부분
 +    cacheConfiguration.setUseNameAsKeyPrefix(true);
 +    cacheConfiguration.setKeyPrefixSeparator(":");
 +    return cacheConfiguration;
 +}
 +</code>
 +  * Memcached 버전에 따라 Key 문자열에 ''#''이 오는 것을 허용하지 않는 듯 하다.
 +
 +===== 임시 Cache 무력화 =====
 +  * ''ssm.cache.disable=true'' System Property 지정을 통해 캐시를 임시로 무력화할 수 있다.<code>
 +-Dssm.cache.disable=true
 +</code>
  
 ===== 주의 ===== ===== 주의 =====
줄 9: 줄 36:
   * ''com.google.code.ssm.CacheFactory'' 객체 로딩이 ''<import resource="classpath:simplesm-context.xml" />'' 보다 먼저 이뤄져야 한다.   * ''com.google.code.ssm.CacheFactory'' 객체 로딩이 ''<import resource="classpath:simplesm-context.xml" />'' 보다 먼저 이뤄져야 한다.
   * 최소한 한 개의 ''default''라는 이름의 캐시가 존재해야 한다. 그렇지 않으면 매번 **@CacheName** 어노테이션으로 캐시 이름을 지정해줘야 한다.   * 최소한 한 개의 ''default''라는 이름의 캐시가 존재해야 한다. 그렇지 않으면 매번 **@CacheName** 어노테이션으로 캐시 이름을 지정해줘야 한다.
 +  * ''@CacheKeyMethod'' 사용시 ''@CacheKey''뿐만 아니라 ''equals/hashCode'' 등을 통한 값 비교도 행해진다. 따라서 올바른 ''equals/hashCode''도 생성해 두어야 한다.
java/simple-spring-memcached.1381154318.txt.gz · 마지막으로 수정됨: 2013/10/07 22:58 저자 kwon37xi