CS 공부/기타

[DB] Redis DB 개념과 특징, 설치까지

강_토발즈 2025. 4. 23. 23:33

 

 

 

Redis 데이터베이스는 여기저기서 주워듣기만 하고 설치와 사용은 해보지 않은 데이터베이스이다. 읽기와 쓰기 속도가 다른 관계형 데이터베이스보다 빠르고, 데이터를 키와 값 의 구조로 저장하기 때문에, 토큰(?) 이나 쿠키 같은 자료들을 저장하는데 유리하다는 것 정도만 알고 있었다.

이제는 실무에서 직접 설치하고 다뤄야 하는 DB가 되었기에, 개념과 특징을 자세히 알아보고 나서 내 데스크탑에 설치 연습을 해보도록 하고, 2부에 이어서 데이터를 직접 쓰고 읽어보고 관계형 DB와는 얼마나 차이가 나는지 실험해보고자 한다.

 

 

1. Redis DB 란?

Redis는 인메모리 기반의 키-값 의 데이터를 저장하는 데이터베이스이다. 다양한 자료구조를 저장할 수 있도록 지원하며 빠른 속도를 체감할 수 있고, 데이터를 디스크에 저장(영속성)할 수 있는 기능을 갖추고 있다.
이해를 쉽게 하기 위해 아래와 같은 비유를 사용해볼 수 있다고 생각했다.

 

DB는 주차장, Redis는 발렛파킹이다.

  • DB(일반적으로 주차장에  직접 주차하는 방식):
    • 내가 직접 차를 몰고 주차장까지 가서 주차를 하고, 다시 걸어 나와야 한다. (식당, 혹은 마트 입구까지)
    • 차를 찾을 때도 주차장까지 다시 걸어가야 하고, 어디 세웠는지 찾아야 한다. 
    • 즉 진짜 일을 보고 (장을 보거나, 어딘가를 방문하는 목적), 다시 집에 도착하기 까지 드는 시간이 많이 든다.
  • Redis(발렛파킹 방식):
    • 발렛 파킹 서비스 장소까지 도착해서 차 키만 맡기면 바로 목적지(가게, 식당)로 갈 수 있다. (직접 주차하는 시간 없음)
    • 차를 다시 찾을 때도 직원이 내가 있는 곳까지 차를 가져다 줘서 기다리는 시간 없이 바로 탈 수 있다.
    • 그리고 혹시 모를 사고(메모리 날아감)에 대비해서, 차 키를 복사해서 금고(디스크)에 보관해두는 옵션도 있다. (persistence 기능)

 

* 다른 데이터베이스 서비스는 어떤  느낌인가?

  • DB (MySQL, PostgreSQL 등 관계형 데이터 베이스 포함.):
    도서관처럼 방대한 정보를 체계적으로 저장한다. 찾아보는 데 시간이 걸리지만 구조화가 잘 되어 있다. ( 이름, 제목, 분류번호 등으로 저장되어 규칙만으로 원하는 책을 찾는 구조)
  • Redis:
    책상(도서관 책장보다는 바로 접근하는 곳) 위 메모처럼 자주 보는 정보만 빠르게 꺼낼 수 있음. 속도는 빠르지만 양이 많으면 힘들어진다.
  • Kafka:
    우체국처럼 편지를 모아서 한 번에 배달. 메시지를 받아서 필요한 사람에게 전달하는 역할.

 

2. Redis DB 의 주요 특징

 

  1. In-Memory 저장소
    • 모든 데이터를 메모리(RAM)에 저장해서 속도가 엄청 빠르다
    • 램을 사용하는 것이 디스크보단 가성비가 좋지 않지만, 필요한 정보만 저장하면 효율적으로 사용할 수 있다.
  2. Key-Value 저장 방식
    • 전화번호부처럼 이름(키)과 전화번호(값)을 짝지어서 저장한다.
    • “mykey” → “Redis”
  3. 다양한 자료구조를 지원한다
    • 리스트
    • 해시
    • 정렬된 셋 등
  4. Persistence (영속성)
    • 메모리에 저장된 데이터는 하드 디스크에 비해 안정성이 떨어질 수 있기 때문에 , 가끔씩 디스크에 저장해서 잃어버리지 않게 한다.
  5. Pub/Sub 기능
    • 한쪽에서 메시지를 보내면, 듣고 싶은 사람들만 받아서 처리하는 방식도 사용 가능
    • 예: 구독, 뉴스 알림, 주식 가격 업데이트 기능

 

3. 우분투에 Redis 설치 하기

 

3-1 명령어로 Redis 설치

sudo apt update 
sudo apt install redis-server
 
 
 
 

3-2. Redis 설정 파일 수정 (영속성 활성화 등)

sudo vi /etc/redis/redis.conf
 
 
  •  편집기는 편한 것으로 사용하면 된다. vim nano 등. vi 를 연습해야 하니 vi 로 실행한다.
  • supervised 항목을 systemd로 수정한다. (서비스로 관리하기 위해).
  • 영속성을 원하면 save 옵션 (RDB)이나 appendonly yes (AOF)를 활성화 하면 된다. 

redis.conf 는 무려 안에 2276 줄이 적혀있다
327 번째 주석줄에서 찾았다. 주석을 해제하고 변경하면 된다.
1379 번째 줄에서 찾았다.

 

 

*참고* 혹시 해당 설정파일의 위치를 명령어로 찾고 싶으면 grep 명령어를 이용하면 위치값을 반환 받을 수 있다.

grep -n "^supervised" /etc/redis/redis.conf

 

 

 

3-3. Redis 서비스 시작 및 활성화

sudo systemctl enable redis-server.service
sudo systemctl start redis-server.service
sudo systemctl status redis-server.service
 
 

기분까지 좋아지는 영롱한 녹색불이다.

 

3-4. Redis 동작 확인하기

redis-cli ping
 

 

redis-cli ping → PONG

  • Redis가 정상적으로 실행 중인지 테스트하는 헬스 체크(health check) 같은 기능이다.
  • 살바토레 산필리포(개발자)가 일부러 이 간단한 테스트 명령어를 만들어 두었다.

살바토레 산필리포

 

3-5. 간단한 명령어 테스트

redis-cli
set mykey "Hello"
get mykey

 

 

  • redis-cli 명령어로 DB 에 대한 명령어를 입력할 수 있게 된다.
  • set 명령어로 키 "값" 형태로 데이터를 저장한다. 정상적으로 저장이 완료되면 OK 가 반환된다.
  • get 명령어로 키 값을 입력하면 저장된 "값" 이 반환되는 것을 볼 수 있다.
  • redis-cli 를 종료하면 exit 나 ctrl + d 를 입력하면 된다.
  • 전체 키 목록을 조회하려면 keys * 명령어로 조회할 수 있지만, redis 에서는 키와 값을 모두 조회하는 것은 성능 저하로 이어질 수 있어 권장하지 않는다. (하지만 방법은 있음)

모든 key 만 조회

 

while 문을 사용하여 키 -> 값 을 모두 조회

 

 

 

4. 마무리

오늘은 Redis를 직접 설치하고, 간단하게 Key-Value 저장 → 조회까지 해봤다.

지금은 단순히 문자열만 저장했지만, Redis는 리스트, 해시, 셋, 정렬된 셋 같은 더 다양한 자료구조도 지원한다. 그리고 데이터를 디스크에 저장(persistence)해서 영속성을 유지할 수도 있다. 다음 에는 Redis의 이런 다양한 자료구조와 어디에 어떻게 활용할 수 있는지 더 깊이 알아보도록 하자!