Redis란 무엇이며, Redis를 사용해야 하는 이유는?
Source: Dev.to
Redis란?
Redis(Remote DIctionary Server)는 키/값 쌍으로 데이터를 저장하는 오픈‑소스 인‑메모리 NoSQL 데이터베이스입니다. 단독 데이터베이스로 사용할 수도 있지만, 성능을 높이기 위해 다른 데이터베이스와 함께 사용하는 경우가 많습니다. Redis는 리더보드, 메신저, 게임 등 실시간 데이터가 필요한 상황에서 빛을 발합니다.
이미 데이터베이스가 있는데 왜 Redis를 사용해야 할까요?
- 인‑메모리 속도 – 대부분의 데이터가 RAM에 존재하므로 Redis는 서브밀리초 지연 시간을 제공합니다. 읽기와 쓰기는 일반적으로 O(1)이며, 디스크 기반 접근보다 1,000–10,000배 빠릅니다.
- 캐싱 – 자주 요청되는 데이터를 Redis에 캐시하면 응답 시간이 크게 줄어들고, 느린 데이터 소스로 인한 병목 현상이 사라집니다.
- 통합 용이성 – 100개가 넘는 오픈‑소스 클라이언트 라이브러리가 다양한 프로그래밍 언어에 제공됩니다. 또한 Redis는 Redis Sentinel과 Redis Cluster를 통해 고가용성을 제공하고, Redis Enterprise는 클러스터링, 로드 밸런싱 등 엔터프라이즈 수준 서비스를 추가합니다.
- 영속성 옵션 – 기본적으로 인‑메모리 저장이 강점이지만, Redis는 RDB 스냅샷(및 AOF 로그)을 사용해 디스크에 데이터를 영구 저장할 수 있어 단독 데이터베이스로도 사용할 수 있습니다.
- 다양한 데이터 모델 – Redis는 폭넓은 데이터 타입을 지원하므로 AI 및 대형 언어 모델(LLM) 워크로드를 포함한 다양한 사용 사례에 적합합니다.
Redis 데이터 타입
- String
- Hash
- List
- Set
- Sorted set
- Vector set
- Stream
- Bitmap
- Bitfield
- Geospatial
- JSON
- Probabilistic data types
- Time series
기본 Redis 명령어
Note: Command keywords are traditionally written in uppercase, but Redis accepts them in any case.
값 설정 및 조회
SET name Joy
# returns OK
GET name
# returns "Joy"
만료 설정
TTL(Time‑to‑Live)이 60초인 키를 설정합니다:
SET name Joy EX 60
만료를 제거하고 키를 영구적으로 만듭니다:
PERSIST name
키 삭제
DEL name
존재 여부 확인
EXISTS name
# returns 0 if the key does not exist, 1 if it does
리스트 연산 (push/pop)
리스트의 왼쪽(헤드) 또는 오른쪽(테일)에 요소를 푸시합니다:
LPUSH mylist "first"
RPUSH mylist "last"
왼쪽 또는 오른쪽에서 요소를 팝합니다:
LPOP mylist # removes and returns the first element
RPOP mylist # removes and returns the last element
이 예제들은 Redis 명령어 집합의 일부에 불과하지만, 애플리케이션에서 Redis를 시작하는 것이 얼마나 간단한지 보여줍니다. 전체 레퍼런스는 공식 Redis documentation을 참고하세요.