전제조건 - 스프링 시큐리티가 적용된 경우에 한함
그 외에도 동작할 수 있으나 확인하지 않음
// Redis & Spring session data redis - for k8s HPA
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'
spring:
session:
store-type: redis
redis:
host: host-domain
port: 6379
password: redis-password
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 600) // sec
public class RedisSessionConfig {
@Value("${spring.redis.host}") private String host;
@Value("${spring.redis.port}") private String port;
@Value("${spring.redis.password}") private String password;
@Bean
public RedisConnectionFactory redisConnectionFactory() {
var redisStandaloneConfiguration = new RedisStandaloneConfiguration();
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(Integer.parseInt(port));
redisStandaloneConfiguration.setPassword(password);
return new LettuceConnectionFactory(redisStandaloneConfiguration);
}
}
Serializable 을 추가하여 동시성을 보장해야 한다.(TODO: 정확한 이유를 확인해야 함.
// 구현체에 Serializable implements 추가 @Getter @AllArgsConstructor @NoArgsConstructor public class UserDetailsImpl implements UserDetails, Serializable { ... }