메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

Redis(레디스) 서버 설치 및 실행 가이드

한빛미디어

|

2024-07-10

|

by 하야시 쇼고

7,144

앞서 레디스 기능의 주요 특징에 대해 알아봤습니다. 이제 우분투Ubuntu 22.04를 예로 들어 레디스 서버를 설치하는 방법을 다뤄보겠습니다. 설치 방법에는 리포지토리운영체제 표준 패키지 매니저를 활용하는 두 가지가 있습니다.

 

레디스는 하위 호환성이 뛰어나 어떤 버전에서도 안정적이며 빠르게 동작하기 때문에 꼭 최신판을 설치할 필요가 없습니다. PPA(CentOS 계열이라면 Remi 저장소 등)를 활용한 패키지 매니저를 통해서 설치하면 충분합니다. 하지만 최신 기능을 쓰고 싶거나, 다른 실행 환경과 버전을 일치시키고 싶은 분을 위해서 소스코드로 빌드하는 방법도 함께 소개합니다.
 

다음과 같은 순서대로 진행한다면 레디스 서버와 클라이언트의 redis-server/redis-cli를 설치할 수 있습니다.

 

✅레디스 설치하기

 

➀ 우분투에서 레디스 설치

우분투에서 APTAdvanced Packaging Tool를 먼저 설치합니다. 공식 리포지토리에는 비교적 이전 버전이 수록되어 있으므로, PPA Personal Package Archive를 사용하여 레디스의 리포지토리에서 레디스의 새로운 버전을 설치합니다.

 

$ sudo add-apt-repository ppa:redislabs/redis
$ sudo apt update
$ sudo apt install redis -y
$ redis-server --version
Redis server v=7.0.4 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64
build=c7d71d4b63066c

코드 1-1 레디스 설치(우분투 22.04)

 

➁ 소스코드로 설치

우분투에서 소스코드로 레디스 서버를 빌드합니다. 다음 순서대로 다운로드, 빌드, 설치를 해봅니다. 

 

$ sudo apt update
$ sudo apt install make gcc -y # 도커 등 일부 환경에서는 curl도 입력한다.
$ curl http://download.redis.io/releases/redis-7.0.4.tar.gz -o redis- 7.0.4.tar.gz
$ tar xzf redis-7.0.4.tar.gz
$ cd redis-7.0.4/ && make && sudo make PREFIX=/usr/local/ install

코드 1-2 레디스 빌드(우분투 22.04)

 

앞서 설명했듯이 레디스를 빌드하기 위해 운영체제의 외부 라이브러리를 설치해야 하는 것은 아닙니다. 리눅스에서 애플리케이션이나 미들웨어를 빌드해본 경험이 있다면, 외부 라이브러리를 추가로 설치하지 않아도 꽤 간단하게 빌드할 수 있습니다.


설치 후에는 버전을 확인하고 레디스 서버가 잘 설치되었는지 확인합니다. 소스코드로 빌드한 경우에는 redis-server가 설치된 bin/ 디렉터리 안에 redis-cli나 다른 도구도 있을 것 입니다.

 

$ redis -server -v 
redis server v=7.0.4 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 
build=b4f49a4d620f29c4

 

➂ 각 설치 방법의 장단점

우분투의 운영체제 표준 패키지 매니저를 이용해 설치하면 설치 과정이 간단하고 빠르다는 장점이 있습니다. 의존성 관리가 자동으로 이루어지고, 시스템 업데이트 시에도 자동으로 최신 버전 유지가 가능하다는 점도 중요하죠. 하지만 최신 버전이 즉시 제공되지 않을 수 있으며 사용자 지정 옵션이 제한적일 수 있는 단점을 가지고 있습니다.

 

반면,  소스코드를 통한 레디스 설치는 최신 버전을 즉시 사용할 수 있고, 컴파일 옵션을 통해 사용자 지정하다는 점이 장점입니다. 특정 환경에 최적화된 설치도 가능하죠. 하지만 설치 과정이 운영체제 표준 패키지 매니저를 이용하는 것 보다는 복잡하며 의존성을 수동으로 관리해야 할 가능성이 있습니다. 물론 업데이트와 유지보수도 사용자가 확인해야 하는 번거로움이 있습니다.

 

각 설치 방법은 사용 목적이나 기술적 요구사항 등에 맞춰 사용하면 보다 레디스를 편리하게 사용할 수 있습니다.

 

상기 방법을 통해 레디스를 설치했다면, 이제 실제로 동작하는지 확인해볼까요? 여기에서는 우분투 22.04 환경 을 사용하며 서버와 클라이언트를 같이 동작하는 것을 전제로 설명합니다.

 

✅ 레디스 동작 테스트

 

➀ redis-server 실행 및 redis-cli로 접속하기

레디스는 클라이언트/서버 모델을 채택하고 있습니다. redis-cli와 같은 클라이언트를 통해 redis-server를 조작합니다.

 

redis-cli는 레디스의 CLICommand Line Interface로써 명령어를 레디스에 보내 레디스 서버에서 보낸 응답을 읽어올 수 있습니다. 데이터 조작은 redis-cli 등 클라이언트에서 명령어로 실행합니다. 데이터 저장하기, 불러오기, 추가하기 등이 가능합니다.

 

redis-cli에는 사용자가 명령어를 입력해서 응답 받는 인터랙티브 모드와 redis-cli의 인수로 명령어를 보내 결과를 출력하는 모드가 있습니다. 레디스를 자주 사용하는 경우에는 매우 유용한 도구가 될 것입니다. 여기에서는 인터랙티브 모드를 통한 실행 예시를 설명합니다 .

 

redis-cli 이외에 여러 프로그래밍 언어의 레디스 클라이언트를 사용하는 경우에도 명령어 체계는 같으므로 동일한 접근 방식으로 이용할 수 있습니다.

 

동작을 확인해봅시다. 먼저 레디스 서버를 redis-server 명령어로 실행합니다.

 

 

서버를 실행하면 여러 정보가 표시됩니다. redis-server 실행 옵션은 redis-server -h/--help로 확인할 수 있습니다. 책 <실전 레디스> 에서는 redis-cli/redis-server의 출력을 보기 쉽게 각 내용을 다른 창(터미널별로 다른 탭 혹은 tmux의 다른 세션)으로 실행하는 방식으로 조작합니다.

 

실행한 레디스 서버에 redis-cli 명령어로 레디스 클라이언트를 접속하면 <접속 주소:포트 번호> 형태로 표시됩니다. 여기부터는 대화식으로 조작할 수 있습니다. 또한 앞서 말한 대로 다른 창으로 실행하는 것을 전제로 진행합니다.

 

$ redis-cli
127.0.0.1:6379>

 

접속이 안 되는 경우에는 아래 내용이 표시됩니다. 해결 방법은 <실전 레디스>의 칼럼 ‘redis-cli에 연결할 수 없을 때의 트러블슈팅’에서 설명합니다.

 

not connected>

 

redis-cli --help로 도움말을 표시합니다. -h는 접속 호스트를 지정하는 옵션입니다.

 

② redis-cli 동작

실제로 레디스 서버에 데이터를 저장하고 꺼내보겠습니다. 예시는 다음과 같습니다.

 

1. SET 명령어로 String형 키 foo에 bar라는 값을 저장합니다.
2. GET 명령어로 키 foo로부터 값을 취득합니다.

 

127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> GET foo
"bar"

 

레디스는 자료형별로 데이터를 설정하고 가져오는 각 명령어를 제공합니다. SET과 GET 각각 String형에 대응됩니다. 레디스 클라이언트로부터 SHUTDOWN 명령어로 레디스 서버를 종료할 수 있습니다.

 

127.0.0.1:6379> SHUTDOWN
not connected>

 

redis-server 명령어를 실행한 레디스 서버 호스트가 셧다운되면 다음과 같은 로그가 표시됩니다.

 

2662:M 29 Aug 2022 04:41:22.493 # User requested shutdown ...
2662:M 29 Aug 2022 04:41:22.493 * Saving the final RDB snapshot before exiting.
2662:M 29 Aug 2022 04:41:22.498 * DB saved on disk
2662:M 29 Aug 2022 04:41:22.498 # redis is now ready to exit, bye bye ...

 

QUIT 명령어로 redis-cli에서 빠져나올 수 있습니다.

 

not connected> QUIT
$

 

redis-cli는 대화 모드뿐만 아니라 명령어 실행도 가능합니다. 명령어 자체는 대화 모드와 다르지 않습니다.

 

$ redis-cli set mykey "foo"
OK
$ redis-cli get mykey
"foo"

 

③ 원격 연결로 조작하기

원격 연결은 redis-cli -h <endpoint>처럼 -h 옵션으로 엔드포인트를 지정해서 사용합니다. 레디스 서버 보호 모드Protected Mode가 활성화되어 있으므로 기본적으로 원격 연결은 동작하지 않습니다. 레디스는 보호 모드가 활성화되면 레디스를 위험한 공격으로부터 지키기 위해 접속 주소가 127.0.0.1로 제한되며 원격 연결을 할 수 없게 됩니다. 

 

보호 모드에서 원격 연결을 하려면 다음 두 가지를 수행해야 합니다.

 

■ bind 지시자에서 접속할 레디스 서버 호스트의 네트워크 인터페이스 IP 주소를 명시적으로 하나 혹은 여러 개를 지정합니다.
■ requirepass 지시자에서 레디스 서버로 인증용 패스워드를 설정합니다.


혹은 다음과 같은 방식을 실행해 보호모드를 해제합니다.


■ 레디스 서버 설정 파일에서 protected -mode no로 지정합니다.
■ redis -server --protected -mode no와 같이 실행 옵션에 --protected -mode no를 추가합니다.


애플리케이션 서버와 레디스 서버 등을 분리할 때는 원격으로 연결하게 됩니다. 하지만 기본적으로 레디스 서버가 퍼블릭 서브넷Public Subnet 인터넷 등처럼 신뢰할 수 없는 클라이언트로 직접 접근할 수 있는 환경을 갖추고 있지는 않습니다. 

 

따라서 실제 운영할 때에는 보안 위험이 커질 수 있습니다. 레디스 서버를 배치할 서브넷에는 충분한 주의가 필요합니다.


위 콘텐츠는 『실전 레디스』에서 내용을 발췌하여 작성하였습니다.

댓글 입력
자료실

최근 본 상품0