1. 학습과 실습의 목적
지난 포스팅에서는 Redis의 기본 개념과 간단한 Key-Value 저장/조회를 실습해봤다.
이번에는 Redis의 심화 기능 중 하나인 리스트(List) 자료구조를 활용해서 메시지 큐(message queue)를 시뮬레이션 해보려고 한다. 이 실습을 통해 Redis가 단순한 캐시 그 이상으로 데이터 흐름을 조절하는 역할을 할 수 있다는 점을 배우고자 한다!
2. 메시지 큐란? , 그리고 왜 Redis 로 메시지 큐를 구현하는가?
메시지 큐는 생산자(Producer)가 보낸 데이터를 소비자(Consumer)가 가져가는 구조이다.
중간에 큐(queue)라는 공간이 있어서 생산자는 데이터를 계속 넣고, 소비자는 필요할 때마다 꺼내간다.
이 흐름을 Redis 리스트(List)로 직접 시뮬레이션 해 보려 한다
그 이유는...!
Redis 는 인 메모리 기반의 DB 로 빠른 읽기/ 쓰기 속도가 강점이기 때문에 빠르게 들어오는 데이터 생산자의 데이터를 먼저 저장해두고, DB나 다른 시스템이 필요할 때 꺼내갈 수 있게 하는데 유리하다.
또 Redis 의 리스트 자료구조는 명령어로 선입선출 기능을 사용할 수 있기 때문에, 데이터 순서를 유지하며 데이터 입출력의 속도를 유지할 수 있으므로 메시지 큐를 쉽게 구현할 수 있다.
또한 설정이 간단하기 때문에 복잡한 다른 것들(rabbitMQ, kafka)과 달리 쉽게 구현해보고 사용가능하다. 또 만료시간을 설정할 수 있기 때문에 큐에 오래 머무르는 데이터를 자동으로 삭제할 수 있기 때문에 메모리 과부화도 막을 수 있다.
3. Redis 리스트(List)로 메시지 큐 명령어
메지시 큐 구현을 위해 알아둬야 할 기본 명령어
- LPUSH key value: 리스트의 왼쪽에 데이터 추가
- RPOP key: 리스트의 오른쪽에서 데이터 꺼내기
이 조합으로 선입선출(FIFO) 구조를 만들 수 있다
4. 실습: 메시지 큐 시뮬레이션
4-1. Redis CLI 접속
redis-cli
4-2. 메시지 넣기 (생산자가 데이터를 Redis 에 넣는 상황)
LPUSH message_queue "message 1"
LPUSH message_queue "message 2"
LPUSH message_queue "message 3"
4-3. 메시지 꺼내기 (데이터를 필요로 하는 DB나 시스템이 데이터를 가져가는 상황)
RPOP message_queue
4-4. 큐 상태 확인하기
LRANGE message_queue 0 -1
-> 데이터를 메시지 큐에 넣고 꺼내는 것을 실습했고, 큐 방식으로 입출력 되는 것을 확인하였다.
5. 실제 메시지 큐 상황 시뮬레이션
생산자는 빠르게 메시지를 넣고, 소비자는 느리게 꺼내는 흐름을 가정 해보려 한다
LPUSH message_queue "message 4" "message 5" "message 6"
위와 같은 명령으로 스크립트가 실행된다면 한번에 많은 데이터가 메시지 큐로 들어오게 될 것이다.
소비자는 천천히 꺼내내는 흐름을 구현하자면
RPOP message_queue
# 잠깐 기다렸다가 다시
RPOP message_queue

지금은 직접 명령어를 시간차를 두고 실행하는 것으로 큐가 쌓였다가 비워지는 흐름을 흉내낸 것이지만, 스크립트로 데이터 출력 실행 주기에 간격 옵션을 주어 실행하거나, 특정 이벤트가 발생하여야 데이터를 꺼내는 상황이라면, 실제로 입력은 빠르게 진행되고, 출력은 상대적으로 느리게 진행될 수 있다.
6. 마무리
Redis 리스트(List)를 활용해서 메시지 큐 흐름을 시뮬레이션해봤다.
이 실습을 통해 Redis가 단순 저장소가 아니라, 데이터 흐름을 조절하는 버퍼 역할도 할 수 있다는 걸 알게 됐다.
'CS 공부 > 기타' 카테고리의 다른 글
[기타 CS] NVIDIA 그래픽카드 상태 모니터링 해보기 (0) | 2025.05.13 |
---|---|
[ETC] RabbitMQ 란 무엇인가? (0) | 2025.04.25 |
[DB] Redis DB 개념과 특징, 설치까지 (0) | 2025.04.23 |
[기타CS] EMS 란 무엇인가? (2) | 2025.04.16 |
Anki - software 사용법(ubuntu) + 정보처리기사 카드 뭉치 공유 (0) | 2025.01.09 |