ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mac M1에서 redis-server 명령어 동작하지 않을 때 해결방법
    DataBase/Redis 2021. 6. 20. 13:01

    정말 간단하게 정리.

     

    6.0.10 버전 이상부터는 해결됐다고 한다. 사정이 없다면 버전업을 추천(2021년 6월 20일 기준 6.2.4버전이 stable) 

     

    redis-server 명령어가 동작하지 않아서 사용하고 있는 노트북이 m1 맥북프로랑 관련이 있지 않을까 싶어 검색해보니 맞았다.

     

    아래처럼 입력하면 잘 실행되는걸 볼 수 있다.

    $ sudo redis-server --daemonize yes

    깃헙 이슈를 보면 Developer-Ecosystem-Engineering분이 남겨두신 상세한 설명을 내 나름 해석해보자면,

    (어려워서.. 정확한 이유를 알고싶으시면 원문을 보시는 걸 추천)

     

    redis-server 커맨드가 수행되면서 초기화 시, 환경변수들을 arguments로 받는다고 한다. 이 argument들을 끝까지 읽어나가면서 담아둔다.

     

    문제가 생기는 순간은 환경변수들(배열)이 초기화를 시작하고 끝나기 전에 환경변수가 추가될때 상황이라 한다.

     

    새로 추가된 환경변수가 낮은 메모리 주소에 할당되면 무시하게 되어 괜찮지만, 기존 메모리 주소보다 더 큰 메모리 주소에 할당되면 버퍼 끝에 변수가 추가 된다.

     

    redis가 C++ 함수인 memset이나 bzero를 통해 버퍼를 초기화할 시, 버퍼 끝에 추가된 변수로 인해 계산된 길이보다 더 길어서 에러가 나는 것

     

    그러면 왜 이런 상황이 m1에서 자주 발생하는 것인가?

     

    m1에서는 한 스택에 열려있는 메모리 주소공간이 아주 크기 때문에 높은 메모리 주소에 할당되는 경우가 많다는 것이다.

     

    sudo로 실행하면 그 환경변수들을 바꿔주어서 이슈가 발생하지 않는단다.

     

    (OS에 deep한 부분까지는 잘 모르기도 해서 더 정확하게 알고싶다면 원문을 보셨으면 한다)

     

     

     

     

    출처: https://github.com/redis/redis/issues/8062

Designed by Tistory.