Redis

hisol·4일 전

Redis?

Remote Dictionary Server의 줄임말로, 메모리 기반의 NoSQL 데이터 저장소입니다.

Redis 는 기본적으로 데이터를 메모리에 저장하기 때문에 매우 빠른 속도를 보여줍니다.

또한, 캐싱 시스템으로 적합한 Key-Value 기반의 구조를 사용하고, 단순한 문자열뿐만 아니라, 리스트, 해시, 집합, 정렬된 집합 등 다양한 자료구조를 지원합니다.

또한, 앞서 배운 캐시 만료 정책 중 일부인 TTL(Time To Live) 기능을 제공합니다.

특히 Redis 는 대부분의 분산 백엔드 시스템에서 Remote 캐시로 널리 사용되고 있습니다.

Redis 가 왜 Remote 캐시 시스템으로 적합할까?

  • 인메모리 기반의 초고속 처리
  • 싱글 스레드 기반 아키텍처와 원자성 보장
  • TTL 지원
  1. 메모리 저장

    Redis는 모든 데이터를 디스크가 아닌 메모리에 저장합니다.

    이에 비해 DB 의 디스크 기반 동작은 데이터를 불러올 때 디스크를 탐색해야 하기 때문에 느립니다.

    Reids 가 메모리 기반으로 동작하기 때문에 디스크 I/O 없이 수 밀리초 단위의 응답 속도를 보장할 수 있습니다.

    즉, Redis는 메모리에서 바로 데이터를 꺼낼 수 있어 극단적으로 빠른 속도를 보여줍니다.

    실제로 대부분의 API 응답 속도 병목은 DB 에서 발생하므로, Redis 캐시로 이를 대체하면 병목 구간을 캐시가 흡수해주는 효과를 기대할 수 있습니다.

  2. 싱글 스레드 아키텍처

    Redis는 내부적으로 싱글 스레드 아키텍처를 사용합니다.

    즉, 동시에 들어온 요청들도 내부적으로는 한 번에 하나의 명령만 순차적으로 처리됩니다.

    이런 싱글 스레드 구조 덕분에 Redis는 모든 명령을 원자적으로 처리합니다.

    원자적 연산이란, 더 이상 쪼갤 수 없고, 중간에 다른 스레드가 개입할 수 없는 연산을 의미합니다.

    즉, 여러 데이터 조회/변경 요청이 동시에 도착하더라도, 한 번에 하나씩 처리되므로 연산 간에 경합이 발생하지 않아 데이터 정합성이 항상 보장됩니다.

    따라서 복잡한 락이나 동기화 없이도 Redis는 내부적으로 항상 일관된 데이터 상태를 유지할 수 있습니다.

    실제로 데이터 정합성이 중요한 환경에서 Redis의 이 특성은 매우 유용하게 작용합니다. Redis 의 원자성 특성을 적극적으로 활용하여 일관성 수준을 충족시킵니다.

  3. TTL 기능

    Redis는 모든 키에 대해 TTL(Time To Live)을 설정할 수 있는 기능을 제공합니다.

    Redis 에서 TTL이 설정된 데이터는 설정된 시간이 지나면 자동으로 삭제됩니다.

    즉, 우리가 앞서 학습한 TTL 기반 캐시 만료 정책을 Redis에서는 별도 구현 없이 간단한 명령어로 적용할 수 있습니다.

    이를 통해 불필요한 캐시 데이터가 오래 남는 것을 방지하고, 메모리를 효율적으로 관리할 수 있습니다.

0개의 댓글