0
아시다시피 스프링 부팅 및 봄 세션은 원 스톱 자동 구성을 제공하지만 내 응용 프로그램에서 세션 redis를 사용하고 응용 프로그램 캐시 redis가 동일한 redis 서버가 아닐 때; 어떻게 구성 할 수 있습니까? 답장을 보내 주셔서 감사합니다.봄 부팅 응용 프로그램을 분리하는 방법 redis 및 봄 부팅 세션 전역 다시 설정
아시다시피 스프링 부팅 및 봄 세션은 원 스톱 자동 구성을 제공하지만 내 응용 프로그램에서 세션 redis를 사용하고 응용 프로그램 캐시 redis가 동일한 redis 서버가 아닐 때; 어떻게 구성 할 수 있습니까? 답장을 보내 주셔서 감사합니다.봄 부팅 응용 프로그램을 분리하는 방법 redis 및 봄 부팅 세션 전역 다시 설정
기본적으로 spring-session과 spring-cache는 모두 connectionFactory
이라는 RedisConnectionFactory
bean을 사용하는 spring-boot에 의해 실제로 구성됩니다. 두 가지 방법이 있습니다.
spring-session
다른 connectionFactory
빈 인스턴스를 사용하여 기본 connectionFactory
를 사용하는 스프링 캐시를 남겨 할 수 있습니다. 그리고 아래 샘플 솔루션입니다 : @Configuration
public class RedisHttpSessionConfig {
@Bean
StringRedisSerializer stringRedisSerializer() {
return new StringRedisSerializer();
}
@Bean
RedisConnectionFactory redisHttpSessionConnectionFactory() {
RedisConnectionFactory redisHttpSessionConnectionFactory = null;
// ... add your codes here
return redisHttpSessionConnectionFactory;
}
@Bean
public RedisTemplate<Object, Object> sessionRedisTemplate(
RedisConnectionFactory redisHttpSessionConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
template.setDefaultSerializer(GenericJackson2JsonRedisSerializer());
template.setConnectionFactory(redisHttpSessionConnectionFactory);
return template;
}
}
다른 connectionFactory
빈 인스턴스를 사용하여 기본 connectionFactory
를 사용하는 스프링 세션을 떠나 spring-cache
을합니다.
@Configuration
public class RedisCacheConfig {
@Bean
StringRedisSerializer stringRedisSerializer() {
return new StringRedisSerializer();
}
@Bean
RedisConnectionFactory redisCacheConnectionFactory() {
RedisConnectionFactory redisCacheConnectionFactory = null;
// ... add your codes here
return redisCacheConnectionFactory;
}
@Bean
RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisCacheConnectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisCacheConnectionFactory);
redisTemplate.setKeySerializer(this.stringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
@Bean(name = "stringRedisTemplate")
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisCacheConnectionFactory) throws UnknownHostException {
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(redisCacheConnectionFactory);
stringRedisTemplate.setKeySerializer(this.stringRedisSerializer());
stringRedisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return stringRedisTemplate;
}
@Bean
CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration(600l);
cacheManager.setUsePrefix(true);
return cacheManager;
}
}