홍이의 개발 노트

Spring Session 에서 Redis 사용시 "ERR unknown command 'CONFIG' redis-server" 발생 본문

개발이야기/스프링(Spring)

Spring Session 에서 Redis 사용시 "ERR unknown command 'CONFIG' redis-server" 발생

코바 2016. 10. 23. 23:52

현재 프로젝트에서 스프링 세션을 도입한 후 레디스를 연동해서 사용하고 있었다. 


로컬이나 직접 레디스 설치 했을 시에는 큰문제가 없었으나 AWS에서 Elasticache(이하 엘라스틱캐시)를 사용해서 연동하려고 하니 아래와 같은 오류가 발생하였다. 


redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'CONFIG' redis-server


문제는 엘라스틱캐시는 개발환경과 연동이 힘들다. 직접 EC2에서 실행할 때만 접속이 가능한 정책때문에 테스트도 힘들었다.


그래서 개발자의 최고 무기인 구글링과 스프링 세션 내부 소스를 추적하여 찾아보니 스프링 세션 시작시  

org.springframework.session.data.redis.config.ConfigureNotifyKeyspaceEventsAction

이 클래스에서 발생하는 예외였다. 


일단 결론은 

@Bean
public ConfigureRedisAction configureRedisAction() {
return ConfigureRedisAction.NO_OP;
}

이렇게 기존 ConfigureRedisAction을 무력화 시키면 되기는 한데 과연 이렇게 하는것이 맞는지 애매 하다.


레디스 키의 추가, 수정, 삭제에 대한 이벤트를 받아서 스프링 세션에서 서블릿 세션 이벤트와 매칭 하여 사용하려고 하는 부분인데 AWS에는 무슨 이유 때문인지(보안?) 때문인지 막아 둔거 같다. 


다른 해결 방법이 없는지 확인 해봐야 할 것 같다.