본문 바로가기

DB & Storage & Stream/Redis

MacOS에서 Redis 설치하기

이 문서의 내용

    Redis 설치 버전 확인

    MacOS에서 Redis는 홈브류(HomeBrew)로 설치합니다. 

    Redis를 설치하기 앞서 현재 PC에 설치 버전과 Redis 패키지의 정보를 출력합니다.

    홈브류가 구버전인 경우 먼저 brew update 명령문을 실행하여 홈브류를 업데이트합니다.

    $ brew info redis

    Redis가 설치되지 않았으면 Not installed됩니다.

    $ brew info redis
    redis: stable 6.2.3, HEAD
    Persistent key-value database, with built-in net interface
    https://redis.io/
    Not installed
    From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/redis.rb
    License: BSD-3-Clause
    ==> Dependencies
    Required: openssl@1.1 ✔
    ==> Options
    --HEAD
    	Install HEAD version
    ==> Caveats
    To have launchd start redis now and restart at login:
      brew services start redis
    Or, if you don't want/need a background service you can just run:
      redis-server /usr/local/etc/redis.conf
    ==> Analytics
    install: 35,610 (30 days), 122,254 (90 days), 714,113 (365 days)
    install-on-request: 35,426 (30 days), 121,657 (90 days), 708,488 (365 days)
    build-error: 13 (30 days)

    이미 Redis가 설치되어 있다면 다음과 같이 출력됩니다.

    $ brew info redis
    redis: stable 6.2.6 (bottled), HEAD
    Persistent key-value database, with built-in net interface
    https://redis.io/
    /usr/local/Cellar/redis/6.0.10 (13 files, 3.9MB) *
      Poured from bottle on 2021-01-29 at 13:01:36
    From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/redis.rb
    License: BSD-3-Clause
    ==> Dependencies
    Required: openssl@1.1 ✔
    ==> Options
    --HEAD
    	Install HEAD version
    ==> Caveats
    To restart redis after an upgrade:
      brew services restart redis
    Or, if you don't want/need a background service you can just run:
      /usr/local/opt/redis/bin/redis-server /usr/local/etc/redis.conf
    ==> Analytics
    install: 35,610 (30 days), 122,254 (90 days), 714,113 (365 days)
    install-on-request: 35,426 (30 days), 121,657 (90 days), 708,488 (365 days)
    build-error: 13 (30 days)

    또는 다음 명령문을 사용하여 현재 PC에 설치된 Redis 버전만 출력 할 수 있습니다.

    $ redis-server --version
    Redis server v=6.2.6 sha=00000000:0 malloc=libc bits=64 build=c6f3693d1aced7d9
    더보기

     다음 명령문은 redis-server --version을 대신 사용 할 수 있습니다.

    $ redis-server -v
    Redis server v=6.2.6 sha=00000000:0 malloc=libc bits=64 build=c6f3693d1aced7d9

    Redis 설치

    brew install redis를 입력하여 Stable 버전의 Redis를 설치합니다.

    $ brew install redis

    Redis 설치가 완료되면 정상 설치를 확인하기 위해서 Redis 버전을 출력합니다.

    $ redis-server --version
    Redis server v=6.2.6 sha=00000000:0 malloc=libc bits=64 build=c6f3693d1aced7d9

    Redis 삭제

    다음 명령문을 입력하여 현재 PC에 설치된 Redis를 삭제합니다.

    $ brew uninstall redis

    만약 일부 config 관련 파일이 삭제되지 않았을 수 있습니다.

    $ brew uninstall redis
    Uninstalling /usr/local/Cellar/redis/6.2.3... (11 files, 1.8MB)
    
    Warning: The following may be redis configuration files and have not been removed!
    If desired, remove them manually with `rm -rf`:
      /usr/local/etc/redis-sentinel.conf
      /usr/local/etc/redis-sentinel.conf.default
      /usr/local/etc/redis.conf
      /usr/local/etc/redis.conf.default

    이 경우 삭제가 누락된 파일을 수동으로 삭제해야 합니다.

    $ rm -rf /usr/local/etc/redis-sentinel.conf
    $ rm -rf /usr/local/etc/redis-sentinel.conf.default
    $ rm -rf /usr/local/etc/redis.conf
    $ rm -rf /usr/local/etc/redis.conf.default

    Redis 설치 및 환경 설정 경로

    MacOS에서는 디폴트로 다음 경로 /usr/local/bin/에서 Redis와 관련된 링크가 생성됩니다.

    Redis 서버를 운영시키기 위한 redis-server 그리고 Redis 서버에 접속하여 데이터 생성/삭제/관리 등의 요청을 보낼 수 있는 redis-client가 존재합니다.

    $ cd /usr/local/bin/
    $ ls -l | grep redis
    lrwxr-xr-x  1 namepgb  admin  41  2  4 19:53 redis-benchmark -> ../Cellar/redis/6.2.6/bin/redis-benchmark
    lrwxr-xr-x  1 namepgb  admin  41  2  4 19:53 redis-check-aof -> ../Cellar/redis/6.2.6/bin/redis-check-aof
    lrwxr-xr-x  1 namepgb  admin  41  2  4 19:53 redis-check-rdb -> ../Cellar/redis/6.2.6/bin/redis-check-rdb
    lrwxr-xr-x  1 namepgb  admin  35  2  4 19:53 redis-cli -> ../Cellar/redis/6.2.6/bin/redis-cli
    lrwxr-xr-x  1 namepgb  admin  40  2  4 19:53 redis-sentinel -> ../Cellar/redis/6.2.6/bin/redis-sentinel
    lrwxr-xr-x  1 namepgb  admin  38  2  4 19:53 redis-server -> ../Cellar/redis/6.2.6/bin/redis-server

    Redis 서버의 환경 설정을 위한 파일 redis.conf은 다음 경로 /usr/local/etc/에 생성됩니다.

    redis.conf 파일은 Redis 서버를 실행하면서 파라미터로 전달 할 수 있습니다.

    $ ls -l | grep redis
    -rw-r--r--   1 namepgb  admin  13768 10  4 19:59 redis-sentinel.conf
    -rw-r--r--   1 namepgb  admin  93765  2  4 19:53 redis.conf

    Redis 서버 실행

    Redis 서버를 실행하는 명령문은 다음 두 가지입니다.

    우선 redis-server 명령문을 이용한 Redis 서버의 실행입니다. 이 명령문을 사용하면 Redis 서버가 포그라운드(Foreground) 프로세스로 시작합니다.

    포그라운드 상태의 프로세스는 키보드 Ctrl+C를 입력하여 서비스를 종료 할 수 있습니다.

    $ redis-server
    15444:C 04 Feb 2022 20:21:48.591 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    15444:C 04 Feb 2022 20:21:48.591 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=15444, just started
    15444:C 04 Feb 2022 20:21:48.591 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
    15444:M 04 Feb 2022 20:21:48.592 * Increased maximum number of open files to 10032 (it was originally set to 256).
    15444:M 04 Feb 2022 20:21:48.592 * monotonic clock: POSIX clock_gettime
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                  
     (    '      ,       .-`  | `,    )     Running in standalone mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
     |    `-._   `._    /     _.-'    |     PID: 15444
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           https://redis.io       
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    15444:M 04 Feb 2022 20:21:48.593 # Server initialized
    15444:M 04 Feb 2022 20:21:48.593 * Loading RDB produced by version 6.2.6
    15444:M 04 Feb 2022 20:21:48.593 * RDB age 972 seconds
    15444:M 04 Feb 2022 20:21:48.594 * RDB memory usage when created 0.96 Mb
    15444:M 04 Feb 2022 20:21:48.594 # Done loading RDB, keys loaded: 0, keys expired: 0.
    15444:M 04 Feb 2022 20:21:48.594 * DB loaded from disk: 0.000 seconds
    15444:M 04 Feb 2022 20:21:48.594 * Ready to accept connections

    다음은 홈브류를 이용한 Redis 서버 실행입니다.

    brew 명령문을 사용하여 Redis 서버를 실행하면 서비스가 백그라운드(Background) 프로세스로 시작합니다.

    $ brew services start redis
    ==> Successfully started `redis` (label: homebrew.mxcl.redis)

    Redis 서버 환경 지정 및 백그라운드로 실행

    홈브류를 사용하지 않고 Redis 서버를 실행하면 서비스가 포그라운드 프로세스로 동작합니다.

    서비스를 백그라운드 프로세스로 시작하려면 환경 설정 파일 /usr/local/etc/redis.conf의 내용을 수정합니다.

    # daemonize no
    daemonize yes

    기존 daemonize no 환경 설정 값을 주석 #으로 처리하고 daemonize yes로 수정합니다.

    이 환경 설정 값을 Redis 서버의 백그라운드(daemonize yes) 또는 포그라운드(daemonize no) 여부를 결정합니다. 

    지정된 환경 설정 파일을 기준으로 Redis 서버를 실행하려면 다음 명령문을 사용합니다.

    $ redis-server /usr/local/etc/redis.conf

    Redis 서버 종료

    Redis 서버가 brew 명령문에 의해 실행 중이라면 다음 명령문을 입력합니다.

    $ brew services stop redis
    Stopping `redis`... (might take a while)
    ==> Successfully stopped `redis` (label: homebrew.mxcl.redis)

    또는 Redis 클라이언트를 사용하여 서버 종료를 요청 할 수 있습니다.

    $ redis-cli shutdown

    Redis 서버 실행 상태 확인

    Redis 클라이언트를 통해 접속 서버의 상태를 검사 할 수 있습니다.

    $ redis-cli ping
    PONG

    이 클라이언트 명령문은 Redis 서버로부터 단순 응답을 기대하는 PING 요청을 보냅니다.

    Redis 서버가 실행중이 아니라면 다음과 같이 출력됩니다.

    $ redis-cli ping
    Could not connect to Redis [host:port]: Connection refused

    다음은 Redis 서버의 활성 포트를 기준으로 PC에서 실행중인 프로세스를 검색하는 방법입니다.

    별도의 환경 설정 값을 변경하지 않았다면 Redis 서버는 6379번 포트를 사용합니다.

    $ ps -ef | grep 6379
      501 17635     1   0  8:47PM ??         0:00.16 /usr/local/opt/redis/bin/redis-server 127.0.0.1:6379