2016-06-10 5 views
0

캐싱에 Redis를 사용하는 Java 웹 서비스가 있습니다. 처음에는 캐싱을 처리하기 위해 Redisson 클라이언트에 직접 액세스하는 CacheService를 만들었습니다. 최근에 캐시 처리를 리팩토링하여 Spring Cache 추상화를 사용하여 코드를 훨씬 명확하게 만들고 모듈 식 설계를 권장했습니다. 불행하게도 Spring은 캐시 된 객체를 직렬화/비 직렬화하기 위해 Jackson을 사용하므로 JSON에 저장되는 유형 정보로 인해 캐시 된 값이 이전보다 훨씬 커졌습니다. 이로 인해 캐시 읽기에서 허용 할 수없는 응답 시간이 증가했습니다. Spring이 캐시 된 컨텐트를 직렬화하고 비 직렬화하는 방식을 사용자 정의 할 수있는 방법이 있습니까? 나는 그것을 내 자신의 논리로 바꾸고 싶지만 문서에서는 아무것도 보지 못한다. 가능한 경우 내 AspectJ 캐시 구현을 롤백 할 필요가 없다.스프링 캐시 추상화에 사용되는 직렬화를 사용자 정의 할 수 있습니까?

답변

1

RedisOperations이며, 직렬화의 작동 방식을 구성 할 수 있습니다. StringRedisSerializer을 사용해야한다고 생각되지만 키와 값의 직렬화를 조정할 수 있습니다.

0

RedissonSpring Cache integration입니다. Jackson, JSRO, Avro, Smile, CBOR, MsgPack, Kryo, FST, LZ4, Snyppy 및 JDK Serialization과 같은 많은 인기 코덱을 지원합니다.

@Bean 
CacheManager cacheManager(RedissonClient redissonClient) { 
    Codec codec = new JsonJacksonCodec(); 

    Map<String, CacheConfig> config = new HashMap<String, CacheConfig>(); 
    config.put("testMap", new CacheConfig(24*60*1000, 12*60*1000)); 
    return new RedissonSpringCacheManager(redissonClient, config, codec); 
} 
: 여기

은 일례이며