Skip to content

dev4hobby/redis-playground

Repository files navigation

README

Redis 환경 구축 및 테스트를 위한 Dockerfile 및 기타 리소스가 작성되어있는 저장소입니다.

사용법

❯ make help
Usage: make [target]

Targets:

help                   지금 보고있는거

account                계정 생성
build                  레디스 환경 빌드
up                     레디스 환경 실행

client                 클라이언트 실행
shell                  클라이언트 쉘 접속

start-cluster-master   클러스터 마스터 레디스 실행
stop-cluster-master    클러스터 마스터 레디스 종료
start-cluster-slave    클러스터 슬레이브 레디스 실행
stop-cluster-slave     클러스터 슬레이브 레디스 종료
start-replica-master   레플리카 마스터 레디스 실행
stop-replica-master    레플리카 마스터 레디스 종료
start-replica-slave    레플리카 슬레이브 레디스 실행
stop-replica-slave     레플리카 슬레이브 레디스 종료

build-df               [unstable] dragonfly 레디스 환경 빌드
up-df                  [unstable] dragonfly 레디스 환경 실행

down                   레디스 환경 종료
clean-cache            캐시 및 필요없는 리소스 제거

클러스터 구성

make build MODE=cluster
make up MODE=cluster

Primary 3개, Replica 3개로 구성된 레디스 클러스터를 구성합니다. 별도로 redis-stat, load_generator, retriever 컨테이너가 같이 실행됩니다.

  • redis-stat: 클러스터의 상태를 확인할 수 있는 모니터링 툴입니다.
  • load_generator: 실행시점부터 종료이전까지 임의의 데이터를 GET, SET 하는 툴입니다.
  • retriever: 실행시점부터 종료이전까지 임의의 데이터를 GET 하는 툴입니다.

테스트를 위해 추가되었으며 필요시 각각의 docker-compose 파일에서 제거하시면 됩니다.

클러스터 구성 후 클라이언트 접속

make client MODE=cluster TYPE=python
make client MODE=cluster TYPE=node
make client MODE=cluster TYPE=go

Python, Node, Go 클라이언트로 작성된 redis 쉘에 접속할 수 있습니다.

execute_command 를 사용하여 명령어를 레디스 서버에 전송하고 응답을 받도록 작성되었습니다. Python 클라이언트로 한번 감싸져있을 뿐, 실제 클라이언트와 별다른 차이는 없습니다.

레플리카 구성

make build MODE=replica
make up MODE=replica

Master, Slave로 구성된 레플리카 레디스 환경을 구성합니다.

장애복구를 위한 Sentinel은 포함되지 않습니다.

센티넬 구성

make build MODE=sentinel
make up MODE=sentinel

Master, Slave, Sentinel로 구성된 레디스 환경을 구성합니다.

Master 노드에 장애가 발생하면 Sentinel이 Slave 노드 중 하나를 Master로 승격시키기 때문에, 장애 발생 시간을 줄여줍니다.

종료

make down

사용하던 모든 리소스를 정리합니다.

Redis backend 변경

Unstable, 상용환경에 적용하기엔 다소 검증이 필요합니다.

기존의 Redis와 호환되는 Dragonfly 를 사용해보실 수 있습니다.

redis가 지원하는 대부분의 커맨드를 지원하지만 아직 불안정해보입니다.

dragonfly/contrib/docker/docker-compose.yaml 파일을 참조하여 환경을 구성하였습니다.