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