본문 바로가기
🏢 DB/1️⃣ Redis

레디스를 5가지 방법으로 설치/구축하기 : 로컬, docker-compose

by kukim 2022. 12. 8.

잘못된 내용이나 의견 있다면 편하게 말씀해주세요.🙏🏻

 

개발/테스트 목적 단일 노드 Redis(Remote Dictionary Server)를 구축하는 5가지 방법을 소개합니다.

(1. 로컬, 2. docker-compose, 3. Embedded Redis, 4. Testcontainers, 5. AWS ElastiCache, Terraform)

운영 목적의 아키텍처(Replication, Sentinel, Cluster)는 아닙니다.

 

글 목록

현재글 : [Redis] 레디스를 5가지 방법으로 설치/구축하기 : 로컬, docker-compose

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : Embedded Redis, Testcontainers

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : AWS ElastiCache

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : Terraform + AWS ElastiCache

 

이번 글에서는 

Redis Server와 Redis Client를 이해하고 로컬docker-compose를 활용하고자 합니다. 

전체 소스 코드는 이곳을 참고해주세요.


0. Redis Server와 Redis Client

먼저 레디스 서버 구축에 앞서 Redis Server와 Redis Client를 정의하고자 합니다.

 

Redis Server

말 그대로 현재 구축하고자 하는 Redis입니다. 

특정 컴퓨터 자원에 Redis Server를 설치하고 Redis Client를 활용하여 Redis Server에 접속하여 사용합니다.

Redis Server 구축 방법은 운영 방식에 따라 Single Node / Replication / Sentinel / Cluster 등의 방식이 있습니다.

 

Redis Client 종류

redis-cli : Redis가 제공하는 터미널 클라이언트 프로그램

openssh / telnet : 유명한 툴로도 Redis에 접속할 수 있습니다.

각 언어의 redis client 라이브러리 : Java의 경우 Jedis, Lettuce

그 외 ...


1. 로컬 Redis 구축

로컬에 Redis 구축하는 방법은 간단합니다.

 

Redis Server

1. Redis Source 다운로드 & 컴파일

2. Redis Server 실행

 

Redis는 ANSI C로 구현되어 있기 때문에 각 OS에 맞는 C 컴파일러를 설치하고 컴파일하면 됩니다. (Redis 저장소, Install Redis Docs)

Mac의 경우 Source를 직접 컴파일하거나 brew를 사용하여 설치할 수 있습니다. (Install Redis on macOS - Docs)

아래는 brew로 설치한 예 입니다.

# 1. Redis Source 다운로드 & 컴파일
# brew가 설치되어있다는 가정하에 brew install redis 명령어로 redis를 설치합니다.
## 해당 명령을 실행하면 brew가 redis source를 다운받아 컴파일합니다.
## 컴파일 결과인 redis-server 실행 프로그램을 /usr/local/bin/redis-server에 설정해줍니다.
## 우리는 이제 손쉽게 redis-server를 실행시킬 수 있습니다.
> brew install redis

> which redis-server
/usr/local/bin/redis-server

설치가 끝나면 redis-server 명령으로 Redis Server를 foreground로 실행할 수 있습니다.

# 2. Redis Server 실행
> redis-server
13319:C 08 Dec 2022 22:27:26.220 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
# 생략
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 7.0.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 13319
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|

# 생략
13319:M 08 Dec 2022 22:27:26.224 * Ready to accept connections

백그라운드 실행하려면 서비스 관리하는 프로세스에 redis-server을 작동시키면 됩니다.

Linux의 경우 systemctl이나 mac의 경우 brew를 사용할 수 있습니다.

# brew에 서비스 등록
> brew services start redis 

# redis 백그라운드 실행중 확인
> brew services info redis
redis (homebrew.mxcl.redis)
Running: ✔
Loaded: ✔
Schedulable: ✘
User: kukim
PID: 13973

# 서비스 종료
> brew services stop redis
Stopping `redis`... (might take a while)
==> Successfully stopped `redis` (label: homebrew.mxcl.redis)

Redis Client : redis-cli

brew나 source를 컴파일하여 redis를 설치하면 기본적으로 redis-cli가 함께 설치되어 있습니다.

Redis Server를 실행시키고, redis-cli를 통해 Redis에 접속하여 redis 명령어를 활용하여 redis를 사용할 수 있습니다.

# redis-server # 레디스 서버 실행후 cli로 연결
> redis-cli

127.0.0.1:6379> set name kukim
OK
127.0.0.1:6379> get name
"kukim"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)

 

마치며

로컬에서 설치하면 비교적 간단합니다. 하지만 OS마다 구축해야 하고 레디스를 사용할 때마다 직접 레디서 서버를 실행시켜야 하는 단점이 있습니다. 이를 위해 os에 독립적이고 비교적 간단히 실행시킬 수 있는 docker-compose로 Redis에 대해 알아보고자 합니다.


2. docker, docker-compose 

docker-compose를 활용하여 Redis Server를 구축하는 방법은 다음과 같습니다.

1. docker-compose yml 파일 작성

2. docker-compose 실행

 

1. docker-compose yml 파일 작성

docker 이미지 구축이 잘되어있기에 아래와 같이 이미지, port 번호 정도만 설정합니다. (추가적으로 redis conf 파일을 추가하려면 이곳 코드를 참고해주세요)

# redis.yml
version: "3"

services:
  redis:
    container_name: redis-server
    image: redis:7.0.5 # https://hub.docker.com/_/redis
    restart: always
    ports:
      - "6379:6379"

2. docker-compose 실행

docker-compose up으로 컨테이너를 실행시킵니다. Redis Client는 도커에 설치된 redis cli로 확인할 수 있습니다.

# 도커 컴포즈를 활용하여 redis 컨테이너 실행
## 백그라운드 실행 시 -d 옵션 추가
docker-compose -f ./container/redis.yml up # -d

## 실행된 도커 프로세스 확인
docker ps     
CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS                    NAMES
97213b72da1e   redis:7.0.5   "docker-entrypoint.s…"   6 seconds ago   Up 4 seconds   0.0.0.0:6379->6379/tcp   redis-server

# 레디스 컨테이너가 실행된 뒤 redis-cli를 통해 레디스에 접속
docker exec -it redis-server redis-cli
$127.0.0.1:6379>

+a) telnet으로 접속하기

현재 로컬 도커에 redis가 실행중입니다. (127.0.0.1:6379)

telnet를 Redis Client로 사용하여 접속할 수 있습니다. 

+a) 현재 redis에 대해 암호가 지정되어있지 않습니다. 암호가 지정된 경우 redis 접속 후 auth 명령을 통해 암호를 입력해야 사용할 수 있습니다.

# telnet [ip] [port]

> telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

set name kukim
+OK
get name
$5
kukim

마치며

Redis Server와 Redis Client를 이해하고 로컬 docker-compose를 활용하여 구축해보았습니다.

다음 글에서 embedded redis (Java/Spring)와 testcontainers 라이브러리를 활용 (Java/Spring) 하여 Redis 구축하는 방법에 대해 알아보려 합니다. 감사합니다.

 

글 목록

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : 로컬, docker-compose

다음글 : [Redis] 레디스를 5가지 방법으로 설치/구축하기 : Embedded Redis, Testcontainers

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : AWS ElastiCache + AWS Console

[Redis] 레디스를 5가지 방법으로 설치/구축하기 : Terraform + AWS ElastiCache


Reference

- docker-compose를 활용하여 redis 컨테이너 사용

 - https://github.com/ku-kim/springboot-redis-example/pull/4

- redis-cli

- Redis 저장소

- Install Redis Docs

- Install Redis on macOS - Docs

 

댓글