Redis란?

진경천·2025년 2월 3일

개요

NoSQL 기반의 DB 프로그램임 기반의 DBMS이다.
Map 자료구조 형태의 Key-Value 저장소로, 고성능의 빠른 읽기/쓰기를 지원

주로 캐싱, 인증 관리, DB 동시성 제어 등의 목적으로 사용
ex)

  1. user1의 비밀번호 1234를 value값으로 저장
  2. key값인 user1로 비밀번호를 인증

특징

  • key-value 형태로 단순화된 데이터 구조로 SQL 쿼리 사용 불필요
  • 빠른 성능
    • 인메모리 NoSQL DB로서 고성능을 자랑함
      • Redis의 메모리상의 데이터는 주기적으로 스냅샷 disk에 저장
      • RDB는 데이터를 disk에 저장하여 필요시에 메모리에 캐싱하는 것이기때문에 RDB보다 훨씬 빠르다.
    • key-value는 구조적으로 해시 테이블을 사용하여 빠른 속도로 검색 가능
  • Single Thread 구조이기 때문에 동시성 이슈가 발생하지 않음
  • 윈도우 서버에서 지원하지 않고 linux, macOS 서버에서 사용 가능

🤔Single Thread란?
한 프로세스에서 오직 하나의 스레드로만 요청을 처리하는 것을 뜻한다.
여기서는 여러개의 요청이 들어와도 한번에 한 사용자의 요청을 처리한다는 것을 의믜함
하나의 스레드만 사용하기 때문에 자원 접근에 대한 동기화를 신경쓰지 않아도 되며 동시성 이슈가 발생하지 않게 되는 것이다.

기본적으로 RDB는 멀티 스레드이므로 동시성 이슈를 신경써야한다.
요청을 순차적으로 하나씩 처리하기 때문에 성능 이슈가 있지 않나라고 생각할 수 있겠지만 빠른 요청 처리로 인해 성능 이슈는 크게 발생하지 않는다.

자료구조

redis에서 모든 key값은 문자열이며 value값 또한 문자/숫자 구분 없이 문자열로 저장한다.

  • String
    • 데이터를 문자혈 형태의 value로 저장
    • 가장 일반적인 key-value 구조의 형태
  • Lists
    • 순서가 있는 문자열 목록
    • deque와 유사한 구조(자바 List)
  • Sets
    • 중복을 허용하지 않는 문자열 집합
  • Sorted Sets
    • 점수가 할당된 문자열로, score를 기준으로 정렬된 순서로 관리함
  • Hashes
    • value 값이 Map 자료구조 형태를 띈다.
profile
어중이떠중이

0개의 댓글