
Redis 데이터베이스는 여기저기서 주워듣기만 하고 설치와 사용은 해보지 않은 데이터베이스이다. 읽기와 쓰기 속도가 다른 관계형 데이터베이스보다 빠르고, 데이터를 키와 값 의 구조로 저장하기 때문에, 토큰(?) 이나 쿠키 같은 자료들을 저장하는데 유리하다는 것 정도만 알고 있었다.
이제는 실무에서 직접 설치하고 다뤄야 하는 DB가 되었기에, 개념과 특징을 자세히 알아보고 나서 내 데스크탑에 설치 연습을 해보도록 하고, 2부에 이어서 데이터를 직접 쓰고 읽어보고 관계형 DB와는 얼마나 차이가 나는지 실험해보고자 한다.
1. Redis DB 란?
Redis는 인메모리 기반의 키-값 의 데이터를 저장하는 데이터베이스이다. 다양한 자료구조를 저장할 수 있도록 지원하며 빠른 속도를 체감할 수 있고, 데이터를 디스크에 저장(영속성)할 수 있는 기능을 갖추고 있다.
이해를 쉽게 하기 위해 아래와 같은 비유를 사용해볼 수 있다고 생각했다.
DB는 주차장, Redis는 발렛파킹이다.
- DB(일반적으로 주차장에 직접 주차하는 방식):
- 내가 직접 차를 몰고 주차장까지 가서 주차를 하고, 다시 걸어 나와야 한다. (식당, 혹은 마트 입구까지)
- 차를 찾을 때도 주차장까지 다시 걸어가야 하고, 어디 세웠는지 찾아야 한다.
- 즉 진짜 일을 보고 (장을 보거나, 어딘가를 방문하는 목적), 다시 집에 도착하기 까지 드는 시간이 많이 든다.
- Redis(발렛파킹 방식):
- 발렛 파킹 서비스 장소까지 도착해서 차 키만 맡기면 바로 목적지(가게, 식당)로 갈 수 있다. (직접 주차하는 시간 없음)
- 차를 다시 찾을 때도 직원이 내가 있는 곳까지 차를 가져다 줘서 기다리는 시간 없이 바로 탈 수 있다.
- 그리고 혹시 모를 사고(메모리 날아감)에 대비해서, 차 키를 복사해서 금고(디스크)에 보관해두는 옵션도 있다. (persistence 기능)
* 다른 데이터베이스 서비스는 어떤 느낌인가?
- DB (MySQL, PostgreSQL 등 관계형 데이터 베이스 포함.):
도서관처럼 방대한 정보를 체계적으로 저장한다. 찾아보는 데 시간이 걸리지만 구조화가 잘 되어 있다. ( 이름, 제목, 분류번호 등으로 저장되어 규칙만으로 원하는 책을 찾는 구조) - Redis:
책상(도서관 책장보다는 바로 접근하는 곳) 위 메모처럼 자주 보는 정보만 빠르게 꺼낼 수 있음. 속도는 빠르지만 양이 많으면 힘들어진다. - Kafka:
우체국처럼 편지를 모아서 한 번에 배달. 메시지를 받아서 필요한 사람에게 전달하는 역할.
2. Redis DB 의 주요 특징
- In-Memory 저장소
- 모든 데이터를 메모리(RAM)에 저장해서 속도가 엄청 빠르다
- 램을 사용하는 것이 디스크보단 가성비가 좋지 않지만, 필요한 정보만 저장하면 효율적으로 사용할 수 있다.
- Key-Value 저장 방식
- 전화번호부처럼 이름(키)과 전화번호(값)을 짝지어서 저장한다.
- “mykey” → “Redis”
- 다양한 자료구조를 지원한다
- 리스트
- 해시
- 셋
- 정렬된 셋 등
- Persistence (영속성)
- 메모리에 저장된 데이터는 하드 디스크에 비해 안정성이 떨어질 수 있기 때문에 , 가끔씩 디스크에 저장해서 잃어버리지 않게 한다.
- 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)를 활성화 하면 된다.



*참고* 혹시 해당 설정파일의 위치를 명령어로 찾고 싶으면 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 에서는 키와 값을 모두 조회하는 것은 성능 저하로 이어질 수 있어 권장하지 않는다. (하지만 방법은 있음)


4. 마무리
오늘은 Redis를 직접 설치하고, 간단하게 Key-Value 저장 → 조회까지 해봤다.
지금은 단순히 문자열만 저장했지만, Redis는 리스트, 해시, 셋, 정렬된 셋 같은 더 다양한 자료구조도 지원한다. 그리고 데이터를 디스크에 저장(persistence)해서 영속성을 유지할 수도 있다. 다음 에는 Redis의 이런 다양한 자료구조와 어디에 어떻게 활용할 수 있는지 더 깊이 알아보도록 하자!
'CS 공부 > 기타' 카테고리의 다른 글
| [기타 CS] NVIDIA 그래픽카드 상태 모니터링 해보기 (0) | 2025.05.13 |
|---|---|
| [ETC] RabbitMQ 란 무엇인가? (0) | 2025.04.25 |
| [DB] Redis 심화 학습 - 메시지큐 시뮬레이션 (0) | 2025.04.24 |
| [기타CS] EMS 란 무엇인가? (2) | 2025.04.16 |
| Anki - software 사용법(ubuntu) + 정보처리기사 카드 뭉치 공유 (0) | 2025.01.09 |