io.lettuce.core.RedisCommandExecutionException:
CROSSSLOT Keys in request don't hash to the same slot
RedisSessionRepository.saveChangeSessionId() 내부의 RENAME 명령spring-session-data-redis) 사용HttpSession.changeSessionId() 호출 (session fixation 방어)RENAME old-key new-key 명령을 발행spring:session:sessions:<UUID>RENAME 같은 multi-key 명령은 모든 키가 같은 슬롯에 있어야만 허용 (CROSSSLOT 검사){...} 안 문자열만 슬롯 계산에 사용 (hash tag 규칙){spring:session} 처럼 감싸면 키가 {spring:session}:sessions:<UUID> 가 되어, 모든 세션 키가 동일 슬롯으로 매핑됨 spring:
session:
redis:
namespace: "{spring:session}"
@Bean
SessionRepositoryCustomizer<RedisSessionRepository> customizer() {
return repo -> repo.setRedisKeyNamespace("{spring:session}");
}
RENAME이 슬롯 검사 없이 동작하므로 발생하지 않음spring:session: → {spring:session}: 로 바뀌므로 기존 세션이 일괄 무효화 → 사용자 재로그인 필요