나는 memcached를 봄용 캐시 구현으로 통합하기 위해 https://github.com/AKQABER/simple-spring-memcached을 사용하고 있습니다.memcached를 사용한 스프링 캐시
그러나 I'had 성공하지 : P 내가 스프링 (4)와 스프링 데이터 JPA
public interface FooRepository extends JpaRepository<Foo, Long> {
@Cacheable(value = "defaultCache", key = "lala")
Foo findByNameAndDescription(String name, String description);
}
을 사용하고
나는 테스트 용 키를 하드 코딩. 특별한 것은 없지만 "defaultCache"라는 캐시를 사용하십시오.
@Configuration
@EnableAspectJAutoProxy
public class CacheConfiguration
{
@Bean
public CacheManager cacheManager()
{
MemcacheClientFactoryImpl cacheClientFactory = new MemcacheClientFactoryImpl();
AddressProvider addressProvider = new DefaultAddressProvider("127.0.0.1:11211");
com.google.code.ssm.providers.CacheConfiguration cacheConfiguration = new com.google.code.ssm.providers.CacheConfiguration();
cacheConfiguration.setConsistentHashing(true); //TODO check this
CacheFactory cacheFactory = new CacheFactory();
cacheFactory.setCacheName ("defaultCache" );
cacheFactory.setCacheClientFactory (cacheClientFactory );
cacheFactory.setAddressProvider (addressProvider );
cacheFactory.setConfiguration (cacheConfiguration );
Cache object = null;
try {
object = cacheFactory.getObject();
} catch (Exception e) {
e.printStackTrace();
}
SSMCache ssmCache = new SSMCache(object, 10000, true); //TODO be very carefully here, third param allow remove all entries!!
ArrayList<SSMCache> ssmCaches = new ArrayList<SSMCache>();
ssmCaches.add(0, ssmCache);
SSMCacheManager ssmCacheManager = new SSMCacheManager();
ssmCacheManager.setCaches(ssmCaches);
return ssmCacheManager;
}
}
그리고 코드로 간단한 기본 클래스를 사용하여 테스트 할 수 있습니다 : memcached와의 구성은
CacheManager cacheManager = context.getBean(CacheManager.class);
FooRepository repository = context.getBean(FooRepository.class);
Cache defaultCache = cacheManager.getCache("defaultCache");
defaultCache.clear();
Foo byNameAndDescription = repository.findByNameAndDescription(DEFAULT_NAME, DEFAULT_DESCRIPTION);
Object obj = defaultCache.get("lala");
을 그리고 OBJ 항상 null입니다. 그러나 defaultCache 객체를 직접 사용하면 문제없이 캐시에 항목을 가져 오거나 가져올 수 있습니다. 어떤 생각?
Key는 해결할 수없는 경우 SpEL을 사용하여 평가되는 표현식을 취합니다. 'null'이 키로 사용됩니다. 그래서 당신이 사용하기를 기대하는 열쇠가 아닌 것 같습니다. –
고마워! 나는 이미 마지막 키 대신에 "lala"를 시도해 왔고, 여전히 null 값을 얻고 있습니다. – ilopezluna