Redis란?
Redis는 “In-Memory 기반의 Key-Value 데이터 저장소”로, 원격 서버에서 프로세스로 동작한다.
관계형 DB가 아닌 NoSQL 계열에 속하며, 빠른 읽기/쓰기 성능을 제공하는 캐시·세션 저장·메시지 큐 등 다양한 용도에 사용된다.
특징
Key-Value 기반 저장소
- RDBMS처럼 복잡한 테이블 구조가 아니라 단순한 키(key)-값(value) 구조.
- 쿼리 연산이 아닌 간단하고 빠른 명령으로 데이터 접근.
In-Memory 저장소
- 데이터를 디스크가 아닌 메모리(DRAM)에 저장 → 응답 속도가 매우 빠름.
- 디스크 I/O 병목이 없어서 고성능 시스템에 적합.
NoSQL
- “Not Only SQL”
- 유연한 데이터 표현 가능.
- 고성능 작업을 위한 단순화된 데이터 구조 제공.
장점
1. 매우 빠른 속도
- 메모리 기반 구조로 인해 읽기/쓰기 지연이 매우 낮음.
- 캐시, 세션 저장, 실시간 랭킹 등에서 높은 성능 제공.
2. 다양한 데이터 구조 지원
- String, Hash, Set, Sorted Set, List 등 풍부한 타입 제공.
- 간단한 Key-Value 뿐만 아니라 복잡한 데이터 처리도 가능.
3. 다양한 언어 지원
- 대부분의 프로그래밍 언어에 공식/비공식 클라이언트 라이브러리 제공.
MySQL 기반 채팅 vs Redis 기반 채팅의 차이
MySQL 기반 채팅
- 테이블 설계 필요 (users, rooms, messages 등)
- 정규화 구조 고민 필요
- INSERT/SELECT 쿼리 사용
- 메시지 저장 시 디스크 I/O 발생 → 느릴 수 있음
- 영구 저장·검색 기능은 강함
Redis 기반 채팅
- 실시간 처리에 초점
- → “메시지를 빠르게 전달하고 임시 저장하는 용도”
- 복잡한 쿼리 X
- 정규화 X
- 키 구조(Key naming)를 직접 설계
- 대부분 “List, Hash, Stream, Pub/Sub” 같은 Redis 자료구조 이용
- 데이터는 메모리 기반 → 속도 매우 빠름
채팅 데이터 저장 방법
Redis = 실시간 메시지 처리용 + 캐시용
- 실시간 채팅 전달(Pub/Sub)
- 최근 메시지 N개 저장
- 온라인 유저 상태 관리
MySQL or MongoDB = 영구 저장용
- 채팅 기록 영구 보관
- 검색(필터링, 기간 조회 등)
- 백업
이렇게 둘을 같이 쓴다.
둘을 함께 쓸 때의 예시
A 메시지 보냄
↓
Redis(PUB) → 실시간 전달 (B에게)
↓
Redis(List) → 최근 메시지 캐시 저장
↓
MySQL → 백그라운드에서 영구 저장
타입에 대한 이해
| 타입 | 느낌(비유) | 특징 |
| String | 그냥 값 1개 | 숫자/문자/JSON 뭐든 저장 가능 |
| Hash | 객체(Object) | user {name, age, hp} 형태 |
| Set | 중복 없는 집합 | 교집합, 합집합 가능 |
| Sorted Set(ZSet) | 점수 붙은 집합 | 랭킹/정렬된 리스트 |
메모장 파일이라고 생각하면 된다.
RDBMS과 달리 Redis는 테이블이 없다. 그래서 depth가 하나이다.
RDBMS 기준으로 보면 2테이블이고 그 밑에 데이터가 쌓이는데, Redis는 일렬로 파일이 생기는것.
ROOM 정보
채팅방정보, 접속유저목록, 접속유저정보 분리의 필요성
별도의 redis key로 분리하는것이 좋음.
이유 : 자료형 역할이 다름. 여러 서버 동시접속. 수정/조회패턴다름.
redis는 key 분리 설계가 기본 패턴.
예시
✔ 1) 채팅방 정보 (Hash)
HSET room:123 title "개발팀"
HSET room:123 owner "user_1"
✔ 2) 채팅방 멤버 목록 (Set)
SADD room:123:members user_1
SADD room:123:members user_2
✔ 3) 채팅방 내 유저 정보 (Hash)
HSET room:123:user:2 nickname "HongKilDong"
HSET room:123:user:2 last_read "18823"
채팅방정보
- 마지막메시지id, 마지막메시지시간
- 빠른 조회 성능
- 채팅방 리스트에서 최신 대화를 바로 보여주기 위해
- 채팅방들을 ‘최신 순 정렬’하기 위해
참고
https://inpa.tistory.com/entry/REDIS-📚-개념-소개-사용처-캐시-세션-한눈에-쏙-정리
[REDIS] 📚 레디스 소개 & 사용처 (캐시 / 세션) - 한눈에 쏙 정리
Redis (Remote Dictionary Server) Redis는 Remote(원격)에 위치하고 프로세스로 존재하는 In-Memory 기반의 Dictionary(key-value) 구조 데이터 관리 Server 시스템이다. 여기서 key-value 구조 데이터란, mysql 같은 관계형
inpa.tistory.com