🖥️ Back-end

인메모리 저장소와 Redis 란? - Redis Stack 설치

승승장규 2025. 3. 1. 15:30

MySql, Oracle 등 관계형 데이터베이스는 테이블의 형태로 데이터를 저장한다.

서비스가 종료가 되어도 데이터베이스의 데이터는 계속 남아있는 영속성, 항상 일관된 데이터를 유지하는 일관성이 있다. 파일 시스템 HDD, SSD에 데이터를 저장하는 데이터베이스이다.

파일 시스템에 저장하고 관리하는 것은 상대적으로 느릴 수밖에 없다.

 

H2는 인메모리 옵션이 있어서 인메모리 상에 관계형 데이터베이스를 테이블로 만들기도 하지만 파일 시스템에 저장하지는 않는다.

 

Redis는 인메모리다. 한마디로 메모리 상에 올라간다는 뜻이다. 즉, 프로그램이 종료되면 데이터가 모두 사라지게 된다.

하지만 메모리(RAM)는 휘발성이므로, 자주 사용하고 자주 쓰이는 데이터를 저장하기 좋다.

 

세션, 장바구니, 조회수 상황에 따라서 자주 바뀌는 데이터 여러 애플리케이션에 거쳐서 자주 공유되는 데이터는 Redis를 활용할 수 있다.

NoSQL의 일종이다. 일반적으로 SQL을 사용하지 않는다. 스키마가 존재하지 않으며, 주로 간단한 명령어를 사용한다 ex) SET greeting "Hello, Redis!" GET greeting

 

NoSQL은 전통적인 관계형 데이터베이스와는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스를 말한다. NoSQL은 주로 대규모 데이터 처리, 높은 확장성, 유연한 데이터 모델링을 필요로 하는 현대 애플리케이션에 적합하다.

 

이번에는 NoSQL의 종류 중 하나인 Redis를 사용하는 방법에 대해 학습해 보자.

 

docker-compose.yml 파일로 docker 환경에 Redis Stack 이미지를 받아와서 사용해 보자

Redis Stack : Redis의 기본 기능을 확장하여 보다 다양한 기능과 모듈을 제공하는 패키지

services: # 여러 컨테이너 서비스를 정의
  redis-stack: # 정의하고자 하는 서비스의 이름
    image: redis/redis-stack
    container_name: redis-stack-compose
    restart: always
#    no: 컨테이너가 종료될 때 재시작하지 않습니다.
#    always: 컨테이너가 종료될 때 항상 재시작합니다.
#    on-failure: 특정 실패 코드로 종료된 경우에만 재시작합니다.
#    unless-stopped: 사용자가 명시적으로 중지하지 않는 한 재시작합니다.
    environment:
      # Redis 서버에 전달할 추가 명령줄 인자
      REDIS_ARGS: "--requirepass {비밀번호}" # 비밀번호 인증을 요구하는 옵션
    ports:
      - 6379:6379
      - 8001:8001

 

또는 docker run 선택은 자유

docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

 

위의 파일을 작성하고 터미널에 해당 명령어를 입력하면

docker compose up -d

 

docker 환경에 Redis Stack 이미지가 생성되는 것을 볼 수 있다.

 

docker compose는 단일 프로젝트 내의 서비스들을 구성 관리하기 위해 하나 이상의 네트워크를 자동으로 생성하기 때문에 기본 네트워크가 하나 생성된 것을 볼 수 있다.

network 내에서 호스트명이나 IP 주소를 통해 서로 접근할 수 있게 도와주는 기능이다.

같은 네트워크에 속한 다른 container는 "redis-compose-default"라는 이름을 사용하여 내부적으로 서로 접근할 수 있다.

만약 직접 network를 설정하고 싶다면 아래와 같이 작성해 줄 수 있다.

networks:
- my_network

networks:

my_network:

driver: bridge

 

Redis Stack을 다운로드하면 Redis Insight가 함께 설치된다. ▼ 애플리케이션을 실행시킨 뒤 localhost:8001로 접속해보

로컬에서만 접속 가능하다. 외부 Redis를 접속하고 싶다면 따로 Insight를 다운 받아보자
앱으로 다운로드 받으면 해당 데이터베이스를 외부에서도 접속할 수 있다.

 

 

 

이후에 Redis를 사용하는 방법에 대해 알아보자🖐️🖐️

댓글수0