Redis

2. Docker로 Redis 실행하기

beekei 2023. 9. 30. 19:39
반응형
 

1. Redis의 이해

Redis란 무엇인가? Remote Dictionary Server로 key-value 형태로 데이터를 저장하고 관리하는 서버를 의미합니다. Redis의 주요 사용자들은 이미 대규모 서비스를 운영하고 있는 큰 기업들이다. 여러가지 Red

devbksheen.tistory.com

1. Redis의 이해글에서 Redis가 무엇인지 특성은 무엇인지 이해해 보았다면

이번글에는 Docker로 Redis를 실행하는 방법에 대해 정리해보겠습니다.

해당 글은 Redis를 실행하는 내용이므로 Docker에 대한 자세한 설명글은 기재하지 않았습니다.

1. Docker Image Pull

docker hub에 접속해 redis를 검색해보면 버전을 확인할 수 있습니다.

 

redis Tags | Docker Hub

redis •• Redis is an open source key-value store that functions as a data structure server.

hub.docker.com

알맞은 버전을 선택해 이미지를 풀받습니다.

$ docker pull redis:latest
$ docker images
REPOSITORY                 TAG         IMAGE ID       CREATED        SIZE
redis                      latest      da63666bbe9a   9 days ago     138MB

2. Docker Volume 생성

로컬에서도 Redis 서버에서 복제한 RDB를 관리하기 위해 volume을 생성합니다.

$ docker volume create redis_data
redis_data

3. Docker Network 생성

Master & Slave 연결을 위한 Network를 생성합니다.

$ docker network create redis-network --driver bridge

4. Redis 환경 설정

Redis의 환경을 설정할 파일을 생성합니다.

$ sudo vim redis.conf

아래는 redis.conf 내용입니다. 필요한 설정만 사용하시면 됩니다.

# 연결 가능한 네트위크(0.0.0.0 = Anywhere)
bind 0.0.0.0

# 연결 포트
port 6379

# Master 노드의 기본 사용자 비밀번호
requirepass redis

# 최대 사용 메모리 용량(지정하지 않으면 시스템 전체 용량)
maxmemory 2gb

# 설정된 최대 사용 메모리 용량을 초과했을때 처리 방식
# - noeviction : 쓰기 동작에 대해 error 반환 (Default)
# - volatile-lru : expire 가 설정된 key 들중에서 LRU algorithm 에 의해서 선택된 key 제거
# - allkeys-lru : 모든 key 들 중 LRU algorithm에 의해서 선택된 key 제거
# - volatile-random : expire 가 설정된 key 들 중 임의의 key 제거
# - allkeys-random : 모든 key 들 중 임의의 key 제거
# - volatile-ttl : expire time(TTL)이 가장 적게 남은 key 제거 (minor TTL)
maxmemory-policy volatile-ttl

# == RDB 관련 설정 ==
# 저장할 RDB 파일명
dbfilename backup.rdb
# 15분 안에 최소 1개 이상의 key가 변경 되었을 때
save 900 1
# 5분 안에 최소 10개 이상의 key가 변경 되었을 때
save 300 10
# 60초 안에 최소 10000개 이상의 key가 변경 되었을 때
save 60 10000
# RDB 저장 실패 시 write 명령 차단 여부
stop-writes-on-bgsave-error no

# == AOF 관련 설정 ==
# AOF 사용 여부
appendonly yes
# 저장할 AOF 파일명
appendfilename appendonly.aof
# 디스크와 동기화 처리 방식
# - always : AOF 값을 추가할 때마다 fsync를 호출해서 디스크에 쓰기
# - everysec : 매초마다 fsync를 호출해서 디스크에 쓰기
# - no : OS가 실제 sync를 할 때까지 따로 설정하지 않음
appendfsync everysec

# == Replication 관련 설정 ==
# Slave Redis 설정
slaveof 127.0.0.1 6380

5. Docker Container 실행

아래 명령어를 통해 Pull 받은 이미지로 컨테이너를 실행합니다.

$ docker run \
-d \
--name redis \
-p 6379:6379 \
--network redis-network \
-v ~/{redis.conf 생성 경로}/redis.conf:/etc/redis/redis.conf \
-v redis_data:/data \
redis:latest redis-server /etc/redis/redis.conf

간단히 설명하면 컨테이너 명은 redis, 연결 포트는 6379(default redis port)로 설정하고
위에서 생성한 conf 파일과 network, volume을 연결합니다.

6. Container 및 Redis 접속

아래 명령어를 통해 컨테이너에 접속 후 Redis에 접속합니다.

$ docker exec -i -t redis redis-cli -a "{Redis 비밀번호}"
$ 127.0.0.1:6379>

접속 완료!

반응형