M1 맥북에서 Embedded Redis 를 그냥 사용하려고 하면 다음과 같이 redis server 를 시작할 수 없다는 에러가 발생합니다.
Caused by: java.lang.RuntimeException: Can't start redis server. Check logs for details. Redis process log: at redis.embedded.AbstractRedisInstance.awaitRedisServerReady(AbstractRedisInstance.java:70) ~[embedded-redis-0.7.3.jar:na] at redis.embedded.AbstractRedisInstance.start(AbstractRedisInstance.java:42) ~[embedded-redis-0.7.3.jar:na]
Embedded Redis 라이브러리 확인
Embedded Redis 라이브러리에서 제공해주는 Redis 아키택처 정보들을 확인하면 M1 맥북에 해당하는 aarch64 용 Redis 를 지원하지 않습니다. 따라서, M1 에서 Embedded Redis 를 사용하기 위해서는 M1 용 아키택처에 맞게 Redis 를 새롭게 빌드해서 Embedded Redis 라이브러리가 띄울 수 있게 제공해야 합니다.
// 1) given explicit file (os-independence broken!) RedisServerredisServer=newRedisServer("/path/to/your/redis", 6379);
Redis 공식 문서에서는 Redis 소스를 제공합니다. 최신 버전에 해당하는 Redis 를 내려받아 M1 맥북에 맞게 소스를 빌드해줍니다.
// Redis 소스를 내려받고 빌드를 폴더 정의 mkdir -p src/main/resources/binary/redis // 다운로드 폴더로 이동 cd src/main/resources/binary/redis // 소스 코드 다운로드 wget https://download.redis.io/releases/redis-7.0.15.tar.gz // 압축 해제 tar xzf redis-7.0.15.tar.gz // redis-7.0.15 디렉토리 이동 cd redis-7.0.15 // Redis 빌드를 진행 make
make 명령어를 통해 빌드를 진행하면 src 폴더에 redis-server 가 생성됩니다. 생성된 redis-server 를 사용하기 쉽게 resource/binary/redis 폴더로 옮겨줍니다.
Embeded Redis 사용하기위한 설정
binary/redis 경로에 M1 아키텍처로 새롭게 빌드된 redis-server 를 RedisServer 에 넘겨주면 어플레케이션이 문제 없이 실행되는 것을 확인할 수 있습니다.