Java프로그래밍

[레디스] java.lang.RuntimeException: Can’t start redis server. Check logs for details 시작 오류 해결 방법

java.lang.RuntimeException: Can’t start redis server. Check logs for details 오류는 로컬환경 STS에서 서버를 재시작하다보면 가끔 발생하는 오류입니다.

2026-09-28 14:20:44 [ERROR] [SpringApplication.java]reportFailure(821) : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embeddedRedisConfig': Invocation of init method failed; nested exception is java.lang.RuntimeException: Can't start redis server. Check logs for details.

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)

at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:920)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)

at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731)

at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)

at com.kt.telecop.Application.main(Application.java:16)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:564)

at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)

Caused by: java.lang.RuntimeException: Can't start redis server. Check logs for details.

at redis.embedded.AbstractRedisInstance.awaitRedisServerReady(AbstractRedisInstance.java:62)

at redis.embedded.AbstractRedisInstance.start(AbstractRedisInstance.java:39)

at redis.embedded.RedisServer.start(RedisServer.java:9)

at com.kt.telecop.jwtredis.config.EmbeddedRedisConfig.redisServer(EmbeddedRedisConfig.java:25)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:564)

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)

... 23 common frames omitted

스프링 부트 실행 시 내장 Redis(EmbeddedRedisConfig)가 정상적으로 시작되지 않아 발생하는 오류입니다.


가장 흔한 원인은 이미 로컬 PC에서 Redis가 실행 중이거나 다른 프로세스가 6379 포트(Redis 기본 포트)를 점유하고 있기 때문입니다. 내장 Redis가 동일한 포트로 서버를 띄우려다 충돌이 난 상황입니다.


해결방법

기존에 켜져 있는 Redis 프로세스 종료 (가장 유력)

윈도우 환경인경우, 명령 프롬프트(CMD)를 관리자 권한으로 열고 아래 명령어를 입력해 포트를 사용 중인 프로세스를 강제 종료합니다.

# 6379 포트를 사용하는 프로세스 ID(PID) 확인
netstat -ano | findstr 6379

# 출력된 PID가 만약 1234라면 강제 종료
taskkill /f /pid 1234

포트 번호는 프로젝트 설정에서 확인합니다.

아래 명령어로 프로세스를 강제 종료합니다.

taskkill /f /pid 9608

그리고 난 후 서버를 재시작 합니다.


맥(macOS) 환경인 경우

터미널을 열고 아래 명령어로 6379 포트를 사용하는 프로세스를 찾아 종료합니다.

    # 포트 확인
    lsof -i :6379
    
    # 출력된 PID 확인 후 종료 (예: PID가 5678인 경우)
    kill -9 5678
    

    만약 Homebrew로 redis를 설치하셨다면 아래 명령어로 서비스를 멈출 수 있습니다.

    brew services stop redis
    


    [추가 팁]

    스프링 부트 Devtools 사용으로 인한 재시작 충돌

    로그 파일 마지막을 보면 org.springframework.boot.devtools.restart.RestartLauncher.run이 확인됩니다. Spring Boot Devtools가 켜져 있어 코드가 바뀔 때마다 서버가 자동 재시작되는 과정에서, 기존 내장 Redis가 완벽히 꺼지기 전에 새 Redis가 켜지면서 포트 충돌이 날 수 있습니다.

    • 해결책: STS에서 프로젝트를 완전히 Stop 한 뒤, 다시 Run/Debug를 눌러 깨끗한 상태에서 실행해 보세요.

    Hi, I’m 관리자