[DBMS] Redis(레디스)란? - 5

2023. 1. 21. 01:31·Study/DB

Redis vs Memcached

앞서 우리는 세션을 저장하는 데 있어, In-memory DB를 활용하는 것이 효율적이라는 것을 배웠다.

같은 Relation Database라도 MySQL, MSSQL, Orcale 드으이 종류가 있듯이, In-memory DB에도 다양한 데이터베이스들이 존재한다.

그중에서도 세션 저장소로 가장 많이 사용되는 메모리 디비로는 Redis와 Memcached가 있다.

두 개의 공통점으로는 In Memory 저장소라는 점과 Key-value의 저장 방식을 가지고 있다.

 

이들의 특징은 다음과 같다.

  • 무료 오픈소스 데이터베이스 이기 때문에 라이선스 비요이 대폭 절약된다.
  • Sub-millisecond 단위의 높은 응답 속도를 보여주기 때문에 대용량 트래픽을 고려하는 우리 프로젝트에 적절하다.
  • Key-value 형태로 저장되기 때문에 같은 Key-value로 저장되는 세션 데이터를 다루는데 적합하다.

그럼 인 메모리 데이터베이스 이면서 세션을 저장하는데 적합한 key-value 형태로 관리되고 속도도 빠른 이 두 데이터베이스의 차이점은 무엇일까?

 

Redis / Memcached 비교

  Redis Memcached
코어 싱글 코어 멀티 코어
자료구조 Strings, Set, Sorted-Set, Hashes 등 다양한 자료구조 지원 Strings, Integers만 지원
데이터 저장 Memory, Disk Memory
속도 읽기, 쓰기 속도가 Memcached보다 느림
하지만 큰 차이는 없음
디스크를 거치지 않기 때문에 읽기, 쓰기 속도가 Redis보다 빠름
복제 Master-Slave, Multi-Master Replication 방식 지원 지원 X
내구성 Memcached보다 내구성이 뛰어남 Redis보다 내구성이 떨어짐
영속성 영속성 데이터 사용 지원X
파이셔닝 방법 샤딩 지원 지원X
메모리 재사용 메모리를 재사용하지 않음, 명시적으로만 데이터 제거 가능 저장소 메모리를 재사용. 만료전에 더 이상 데이터를 넣을 메모리가 없으면 LRU 알고리즘에 따라 데이터 삭제
만료일 지정 방식 만료일을 지정하면 만료된 데이터는 캐시처럼 사라짐 동일

해당 표에서 볼 수 있듯이 Memcached의 경우 Write 연산에 있어서, Redis보다 좋은 성능을 보임을 알 수 있다.

하지만, Read 연산에 있어서는 Redis가 더 좋은 성능을 보인다.

이를 비교해보았을 때, Redis가 세션을 저장하는 데 더 적합하다는 점을 알 수 있다.

세션 관련 작업의 경우, 쓰기 연산보다는 읽기 연산이 압도적으로 높은 작업이기 때문이다.

마지막으로 Redis가 Read/Write에 있어서 메모리를 더 효율적으로 사용하는 것을 볼 수 있다.

 

위 그래프 결과를 종합한 결과 쓰기 성능에서는 Memcached가 앞서지만 메모리 사용 효율과 처리속도, 그리고 이외의 다양한 자료구조 지원과 아키텍처 지원을 모두 고려한다면 Redis가 상대적으로 더 나은 선택임을 알 수 있다.

 

Redis / Memcached 상황에 따른 선택

 

Memcached

  1. 메모리가 삭제되어도 원본 데이터로 복구가 가능하며 장애가 발생하지 않는 경우
  2. 단순 조회로 통신 속도만을 향상시키는 목적인 경우

Reids

  1. 메모리가 삭제되었을 때 서비스 장애가 발생할 수 있는 경우
  2. 서비스의 특정 기능을 위한 목적으로 사용하는 경우 (다양한 데이터 타입을 활용해서 사용할 때 등)

'Study > DB' 카테고리의 다른 글

[Redis] Redis(레디스) 자료구조  (0) 2023.02.05
[DBMS] Redis(레디스)란? - 6  (0) 2023.01.22
[DBMS] Redis(레디스)란? - 4  (0) 2023.01.19
[DBMS] Redis(레디스)란? - 3  (0) 2023.01.19
[DBMS] Redis(레디스)란? - 2  (0) 2023.01.18
'Study/DB' 카테고리의 다른 글
  • [Redis] Redis(레디스) 자료구조
  • [DBMS] Redis(레디스)란? - 6
  • [DBMS] Redis(레디스)란? - 4
  • [DBMS] Redis(레디스)란? - 3
개발새발개발
개발새발개발
  • 개발새발개발
    끄저억끄저억
    개발새발개발
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • Study (45)
        • DB (9)
        • WEB (11)
        • Spring (14)
        • JS (5)
        • Python (2)
        • IntelliJ (4)
      • 이슈 해결 (2)
      • Challenge (4)
        • 구름톤 챌린지 (3)
        • 자격증 (0)
      • 우아한테크코스 (2)
      • Dev Camp 3기 (0)
      • 개발 Tip (3)
      • 일상 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IntelliJ
    객체지향
    db
    우테코
    singleton
    Java
    우아한테크코스
    레디스
    NULL
    Redis
    스프링
    JPA
    DBMS
    jwt
    싱글톤
    web
    til
    김영한
    Spring
    realforce r3
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
개발새발개발
[DBMS] Redis(레디스)란? - 5
상단으로

티스토리툴바