Skip to content

Redis란? 그리고 왜 만들어보나? ​

Redis(REmote DIctionary Server) = 키-값(key-value) 형태로 데이터를 다루는 오픈소스 NoSQL 데이터베이스. 디스크가 아니라 **메모리(RAM)**에 데이터를 직접 저장·조회하기 때문에 쿼리 없이 키만 알면 값을 바로 꺼낼 수 있고, 그만큼 빠릅니다. 캐시(임시 저장), 세션 저장 등에 전 세계적으로 쓰입니다.

왜 캐시로 많이 쓰일까? ​

캐시는 "한 번 읽어온 데이터를 가까운 곳에 보관해서, 다음에 또 찾을 때 빠르게 꺼내주는 공간"입니다. 서버가 매번 느린 디스크 기반 DB까지 가는 대신, Redis 같은 캐시부터 확인하는 흐름을 씁니다.

1. 클라이언트 → 서버: 데이터 요청
2. 서버 → 캐시(Redis): "이 데이터 있어?"
   있으면 → 캐시에서 바로 반환 (빠름, 여기서 끝)
   없으면 → 3번으로
3. 서버 → DB: 디스크 기반 DB에서 조회
4. 서버: 가져온 데이터를 캐시에도 저장해두고, 클라이언트에 반환

한 번 캐시에 들어간 데이터는 다음 요청부터 2번에서 바로 끝나기 때문에 훨씬 빨라집니다.

인메모리 DB vs 디스크 기반 DB ​

일반적인(디스크 기반) DB는 자주 쓰는 데이터 "일부만" 메모리에 올려두고 나머지는 디스크에서 읽습니다. Redis 같은 인메모리 DB는 반대로 데이터 자체를 메모리에서 갱신하고, 백업·로그만 디스크에 남깁니다.

  • 메모리만 오가니 디스크 I/O 병목이 없어서 훨씬 빠르다.
  • 대신 서버가 꺼지면 메모리 내용이 날아갈 수 있어서, 실제 Redis는 스냅샷·로그 같은 이중화 장치를 따로 마련해둔다.

이 미션은 Redis 그 자체가 아니라, Redis가 빠른 이유인 내부 자료구조 3종(해시맵, 이중 연결 리스트, 힙)을 직접 손으로 구현하면서 원리를 체득하는 것이 목표입니다. 그래서 Python이 기본 제공하는 dict, set, collections 사용이 금지되어 있습니다.


출처: Codyssey-B1/B5-1