Redis 이란?
메모리 기반의 초고속 Key-Value 저장소
공식 이름: Remote Dictionary Server
- 데이터를 RAM(메모리) 에 저장 → 디스크보다 수천 배 빠름
- Key와 Value를 다양한 형태(List, Set, Hash 등)로 저장 가능
- 단순 캐시를 넘어서, 메시지 큐, 세션 관리, 실시간 순위 집계 등 다양하게 사용됨
특징 요약
1. 빠르다
- 모든 데이터가 메모리에 있어 조회/쓰기 속도가 1ms 미만
- 초당 수십만~수백만 건 처리 가능
2. 다양한 자료구조
- String, List, Set, Sorted Set, Hash, HyperLogLog, Stream 등
- 단순 캐시 외에 순차 처리(큐), 순위(랭킹) 등도 구현 가능
3. 단일 스레드 기반
- 내부적으로 싱글 스레드 → 레이스 컨디션 없이 동작
- 동시에 다수의 클라이언트 요청 처리 가능
4. 데이터 영속성 (옵션)
- 메모리에만 두는 게 아니라, 주기적으로 디스크에 저장 가능
- Redis RDB, AOF 방식
5. 간단한 복제/클러스터링
- 마스터-슬레이브 복제, Sentinel을 통한 장애 조치
- Redis Cluster로 샤딩(수평 확장)
무엇에 쓰나? (실무 용도)
용도 | 설명 |
캐시 | DB 데이터, API 응답 등을 메모리에 저장 → 빠른 조회 |
큐 | List 자료구조 + BRPOP → 순차 처리, 비동기 작업 |
세션 저장소 | PHP, Node 등에서 세션을 Redis에 저장 |
실시간 순위/랭킹 | Sorted Set → 점수 기반으로 순위 조회 |
Pub/Sub | 실시간 알림, 채팅 등 메시지 브로드캐스팅 |
분산락 | SETNX → 동시성 제어, 중복 방지 |
자료구조 예시
자료구조 | 설명 | 예시 |
String | 단일 값 | 캐시, 카운터 |
List | 순서가 있는 값 목록 | 큐(작업 순차 처리) |
Set | 중복 없는 집합 | 태그, 좋아요 유저 ID |
Sorted Set | 점수가 있는 집합 | 랭킹, 리더보드 |
Hash | Key-Value 묶음 | 사용자 정보 (id → 필드들) |
Stream | 로그, 채팅 메시지 | 메시지 스트림 처리 |
실무 시나리오 예
예) 동시에 많은 결제 요청 → 순차 처리
- PHP가 RPUSH 로 작업을 Redis 리스트에 추가
- 워커(PHP or Node)가 BRPOP 으로 하나씩 꺼내 처리
- 처리 중에는 다른 작업을 꺼내지 않음 → 순서 유지
- 처리 결과 DB에 기록
* 덕분에 속도도 빠르고, 순서도 유지됨
왜 DB만 쓰지 않고 Redis를 쓰나?
1. DB에 직접 INSERT/SELECT → 느림 (디스크 I/O)
2. Redis는 메모리 기반 → 초고속
3. 다수 요청에도 순서·락 처리 용이
4. DB 부하를 낮춤 → 시스템 안정성↑
'Server' 카테고리의 다른 글
Rocky Linux에서 파일 복사 하는 CP 명령어 (71) | 2025.07.22 |
---|---|
Rocky Linux의 파일을 찾거나 내용에서 특정 문자열 찾기 (40) | 2025.07.04 |
OpenSSL 확장을 설치하는 방법 (44) | 2025.06.20 |
Rocky Linux 9 의 Java 17 설치 (12) | 2025.06.18 |
리눅스 서버 용량 체크 (19) | 2025.06.18 |