Post

[Redis] Redis 기본 개념 및 특징

Redis란?


Redis는 Remote Dictionary Server의 약자로, 메모리 기반의 Key-Value 저장소이다.
비관계형 데이터베이스(NoSQL)이며, 메모리를 사용하기 때문에 RDBMS보다 속도가 매우 빠르다.



Redis의 특징


1. Key-Value 기반

  • 모든 데이터는 Key-Value 쌍으로 저장된다.


2. 시간복잡도 O(1)

  • Key-Value 이기 때문에 연산(조회, 삽입, 삭제)의 시간복잡도가 O(1) 으로 매우 빠르다.


3. 메모리 기반

  • 데이터를 디스크가 아닌 메모리에 저장하기 때문에 RDBMS 보다 수만~수십만 배 빠르다.
  • 메모리를 사용하기 때문에 서버가 꺼지면 데이터가 휘발된다.
    • 데이터 영속성(Persistence)을 위해 RDB(Snapshot)AOF(Append Only File) 방식을 지원한다.
    • 하지만, 해당 기능은 서비스 장애의 주된 원인이 될 수 있기 때문에 운영 환경에선 사용을 지양한다고 한다.


4. 싱글 스레드

  • 싱글 스레드로 동작하기 때문에 한 번에 하나의 작업만 처리할 수 있다.
  • 원자성이 보장되어, Race Condition이 발생하지 않는다.
  • 때문에 멀티 스레드 환경에서 발생할 수 있는 교착상태(Dead Lock)가 발생하지 않는다.


5. 분산 락

  • 싱글 스레드이기 때문에 분산락(Distributed Lock) 구현이 쉽다.
  • Spring boot 환경에서는 Redisson 라이브러리를 사용하여 쉽게 구현할 수 있다.


6. 세션 관리

  • TTL(만료시간)을 지원하기 때문에 세션 관리에 적합하다.
  • 예) 로그인 세션, 인증 토큰


7. 캐싱

  • 자주 조회되는 데이터를 캐싱해서 DB 부하를 줄이고 읽기 속도를 높일 수 있다.
  • 대표적인 패턴으로는 Cache-Aside, Write-Through 등이 있다.


8. 실시간 분석

  • 실시간 집계, 카운팅, 순위 집계(랭킹) 등에 활용할 수 있다.
  • 예) 게임 실시간 랭킹, 실시간 접속자 수


9. 다양한 데이터 구조

공식 문서 참고

  • String: 가장 기본적인 데이터 타입으로, 단순한 문자열이나 숫자를 저장할 수 있다.
  • List: 순서가 있는 값의 집합으로, 중복을 허용한다.
  • Set: 순서가 없는 값의 집합으로, 중복을 허용하지 않는다.
  • Sorted Set: 순서가 있는 값의 집합으로, 중복을 허용하지 않으며, 각 값은 점수(score)를 가진다.
  • Hash: 필드와 값의 쌍으로 이루어진 데이터 구조로, 객체를 표현하는 데 적합하다.


11. Pub/Sub

  • Redis는 메세지 브로커로도 활용된다.
  • 채널 기반으로 Publisher/Subscriber를 지원하여 알림이나 채팅 시스템에 활용될 수 있다.

© Hoon. Some rights reserved.