Post

02 인메모리 관련 개념

02 인메모리 관련 개념

1. Note

  • 인메모리 개념정리!
  • 레디스와 인메모리
    • 사용법만 간단히 접근하다가 세번째 개념까지 접근
    • 아직도 필수인지 아닌지는 모르겠음
    • 이것에 대한 사용기준이 뭐지?
  • 카프카랑 레디스 구분 필요!
    • 전혀 다른 개념! 전혀 다른 기술!
    • 비슷한 시기에 급하게 배워서 착각중!

2. 인메모리 저장소

1. 인메모리 저장소

  • 데이터를 하드 디스크 대신 컴퓨터의 메모리(RAM)에 직접 저장하는 방식
  • 장점
    • 메모리 기반이라 디스크 접근이 없어 매우 빠른 속도를 제공
    • 자주 조회되는 데이터를 캐싱함으로써 DB 부하를 줄이고 전체 시스템 성능을 높일 수 있음
    • TTL(Time To Live)을 설정해 데이터가 자동으로 만료되도록 관리할 수 있어 운영이 편리
    • 여러 서버가 하나의 저장소를 공유할 수 있어 분산 환경에서 세션 관리나 상태 공유에 유리
  • 단점
    • 메모리에 저장되기 때문에 서버가 재시작되면 데이터가 유실될 수 있는 휘발성이 있음
    • RAM을 사용하므로 디스크 기반 저장소보다 비용이 높음
    • 대용량 데이터를 장기간 저장하는 용도로는 비효율적
    • 트랜잭션이나 데이터 정합성 측면에서는 RDBMS보다 상대적으로 약한 편

2. 종류

1. Key-Value 기반 (가장 일반적)

  • 가장 기본적인 형태로, key 하나에 value 하나를 매핑하는 구조
  • 구조가 단순해서 속도가 매우 빠르고, 캐시나 세션 저장처럼 “빠르게 꺼내 쓰는 용도”에 최적화되어 있음
  • 특히 Redis는 다양한 자료구조를 제공해서 단순 캐시를 넘어서 랭킹, 카운팅 같은 기능도 처리가능함.
  • Redis, Memcached 등등

2. In-Memory Data Grid (분산형)

  • 여러 서버의 메모리를 묶어서 하나의 큰 저장소처럼 사용하는 구조
  • 단순 캐시를 넘어서 데이터를 분산 처리하고, 클러스터 환경에서 확장성과 고가용성을 확보하는 데 초점
  • 대규모 트래픽이나 실시간 처리 시스템에서 주로 사용됨
  • Hazelcast, Apache Ignite 등등

3. In-Memory Database (IMDB)

  • 일반적인 RDBMS처럼 SQL을 사용하지만, 데이터를 디스크가 아닌 메모리에 올려서 동작하는 데이터베이스
  • 덕분에 조회 성능이 매우 빠르며, 테스트 환경(H2)이나 고성능 분석 시스템(HANA)에서 많이 활용
  • H2 Database, SAP HANA 등등등

4. Embedded In-Memory Store (내장형)

  • 별도의 서버 없이 애플리케이션 내부에 직접 포함되어 동작하는 캐시
  • 네트워크 호출이 없어서 가장 빠르지만, 해당 서버에서만 유효하다는 한계
  • 주로 단일 서버 캐시나 1차 캐시(local cache)로 사용
  • Caffeine 등등

3. Redis와 Memcached

1. 비교

항목RedisMemcached
구분기능이 많은 데이터 저장소형 프로그램단순하고 빠른 캐시 전용 프로그램
핵심 역할캐시 + 데이터 저장소 (확장형)캐시 전용 (경량)
데이터 구조String, List, Set, Hash, Sorted Set 등 다양단순 Key-Value (문자열/숫자)
영속성지원 (RDB, AOF)없음 (완전 휘발성)
성능빠름 (기능 많아 약간 오버헤드)더 단순해서 매우 빠름
분산 처리Redis Cluster 지원클라이언트 기반 분산
기능Pub/Sub, 트랜잭션, Lua 등 다양거의 없음
TTL지원지원

2. Redis

  • Redis는 다양한 데이터 타입을 지원하는 오픈소스 인메모리 데이터 저장소
  • 단순히 키(Key)와 값(Value)만 저장하는 것을 넘어, 리스트, 시, 집합 등 여러 가지 형태로 데이터를 저장하고 다룸
  • 주요 특징
    • 단순 문자열뿐만 아니라 List, Hash, Set, Sorted Set 등 다양한 자료구조를 제공하여 상황에 맞는 데이터 처리
    • 메모리 기반이지만 디스크에 데이터를 저장(RDB, AOF), 서버 재시작 시에도 데이터 복구가 가능
    • 여러 서버에 데이터를 분산 저장하여 확장성과 고가용성을 확보, 장애 발생 시에도 안정적인 서비스 운영
    • 데이터에 만료 시간을 설정, 캐시나 세션 같은 임시 데이터를 자동으로 관리함

3. Memcached

  • 단순한 키-값 형태의 데이터를 저장하는 데 특화된 가볍고 빠른 분산 캐싱 시스템
  • 주요 특징
    • 문자열이나 숫자 기반의 단순한 데이터만 저장할 수 있어 구조가 매우 간단하고 처리 속도가 빠름
    • 데이터를 메모리에만 저장하기 때문에 서버가 재시작되면 모든 데이터가 사라짐, 캐시 용도가 적합
    • 여러 서버에 분산하여 데이터를 저장, 캐시 용량을 확장하고 시스템 부하를 효과적으로 분산할 수 있음

4. 선택의 기준

1. Redis 선택 기준

  • 단순 캐시를 넘어 구조화된 데이터(List, Set, Hash 등)를 다뤄야 하는 경우
  • 세션 저장, 로그인 상태 관리처럼 데이터 일관성이 중요한 경우
  • 서버 재시작 이후에도 데이터를 유지해야 하는 경우 (영속성 필요)
  • Pub/Sub, 랭킹(Sorted Set), 카운팅 등 추가 기능이 필요한 경우
  • 여러 서버에서 공통 데이터를 공유하는 분산 환경인 경우

2. Memcached 선택 기준

  • 단순 조회 성능 개선용 캐시만 필요한 경우
  • 데이터가 사라져도 문제가 없는 임시 데이터인 경우
  • 구조가 단순하고 빠른 응답 속도가 최우선인 경우
  • 시스템을 최대한 단순하게 유지하고 싶은 경우
This post is licensed under CC BY 4.0 by the author.