레디스(Redis)는 Remote Dictionary Server의 약자로, 오픈 소스 기반의 인메모리(In-memory) 데이터 구조 저장소이자 비관계형(NoSQL) 데이터베이스 관리 시스템(DBMS)이다. "키-값(Key-Value)" 구조로 데이터를 저장하고 관리하며, 모든 데이터를 메모리(RAM)에 적재하여 처리하기 때문에 매우 빠른 읽기·쓰기 성능을 제공한다. 주로 캐시 서버, 세션 저장소, 메시지 브로커, 실시간 데이터 처리 등의 용도로 널리 사용된다.
개발 배경 및 역사
레디스는 2009년 이탈리아 개발자 살바토르 산필리포(Salvatore Sanfilippo)가 처음 개발하였다. 이후 2015년부터 Redis Labs(현재 Redis Inc.)가 개발과 유지보수를 지원하고 있다. 소프트웨어는 BSD 라이선스를 따르는 오픈 소스 프로젝트로, 공식 저장소는 GitHub(redis/redis)에서 관리되고 있다. 프로그래밍 언어는 ANSI C로 작성되었으며, 크로스 플랫폼을 지원한다.
데이터 모델 및 자료 구조
레디스는 단순한 문자열 저장만이 아니라 다양한 추상적 자료형(Abstract Data Type)을 지원하는 것이 특징이다. 주요 데이터 타입으로는 다음이 있다.
- 문자열(String): 가장 기본적인 데이터 타입으로, 텍스트, 직렬화된 객체, 바이너리 배열 등을 저장한다.
- 리스트(List): 문자열의 순서가 있는 집합으로, 양쪽 끝에서 요소를 추가하거나 제거할 수 있다.
- 집합(Set): 반복되지 않고 정렬되지 않은 문자열의 집합이다.
- 정렬된 집합(Sorted Set): 각 요소에 스코어(Score)라고 불리는 부동소수점 값을 부여하여 정렬된 상태를 유지하는 집합이다.
- 해시(Hash): 키와 값이 모두 문자열인 필드-값 쌍의 모음이다.
이 외에도 비트맵(Bitmap), 하이퍼로그로그(HyperLogLog), 지리공간(Geospatial) 인덱스 등 다양한 확장 데이터 구조를 지원한다.
주요 특징
레디스는 인메모리 방식으로 동작하므로 디스크 접근으로 인한 지연이 없어 마이크로초 단위의 응답 시간을 달성할 수 있다. 데이터의 영속성을 위해 RDB(Redis Database) 스냅샷과 AOF(Append-Only File) 방식의 디스크 저장 옵션을 제공한다. 또한 마스터-슬레이브 구조의 복제(Replication), 고가용성을 위한 센티널(Redis Sentinel), 수평적 확장을 위한 클러스터(Redis Cluster) 기능을 갖추고 있다.
활용 분야
레디스는 웹 애플리케이션의 캐시 서버로 가장 널리 사용되며, 분산 환경에서의 세션 관리, 실시간 순위표 구현, 메시지 큐 및 발행-구독(Pub/Sub) 패턴의 메시지 브로커 등 다양한 용도로 활용된다. 또한 DB-Engines.com의 월간 랭킹에 따르면 레디스는 가장 인기 있는 키-값 저장소로 평가되고 있다.
라이선스 및 운영 주체
레디스는 BSD 라이선스를 따르며, 오픈 소스 커뮤니티와 Redis Inc.(구 Redis Labs)가 공동으로 개발을 진행하고 있다. 2024년 라이선스 변경 논의 이후 일부 오픈 소스 커뮤니티에서는 레디스에서 포크된 Valkey와 같은 대안 프로젝트가 등장하기도 하였다.