ehCache vs Redis vs Ignite을 알아보자!

Karim·2022년 7월 3일
4

study

목록 보기
1/7
post-thumbnail

1. main memory / cache란

main memory

  • RAM
  • 컴퓨터의 CPU가 현재 처리중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리
  • 접근속도가 빠름

cache

  • 레지스터 다음으로 빠른 메모리
  • 자주 쓰일 것 같은 데이터를 메모리에서 캐시로 가져온다
  • 캐시는 cpu와 ram 사이에 위치

💡 I/O 속도

  • CPU > Cache > RAM > HDD

2. ehCache 란?

✒️ 간단한 구조

  • spring에서 간단히 사용할 수 있는 Java 기반 오픈소스 캐시 라이브러리
  • key-Value 구조 데이터 관리 시스템
  • local cahce
    • 각 서버에 중복된 데이터를 보관
  • 스프링 내부적으로 동작하여 캐싱처리 및 스프링 라이브사이클을 같이 함
  • 속도가 빠르며 경량 cache
  • 서버 간 분산 캐시를 지원 (서버가 2대 이상이라도 하나의 url만 호출, 동기, 비동기 복사, 피어 자동 발견)
  • 영속성 기능을 제공하기 때문에 재 기동 시 데이터 모두 복구 가능

🥊 2.x VS 3.x

  • 2.x
    • heap memory를 사용 (GC에 의해 데이터 소멸)
  • 3.x
    • offheap 저장공간을 제공
    • javax.cache API(JSR-107)와 호환성을 제공
      • (객체 생성, 공유 액세스, 스풀링, 무효화 및 JVM 전반에 걸친 일관성을 포함하여 Java 객체의 메모리 캐싱에서 사용할 API 에 대한 기준)

3. Redis 란?

✒️ 간단한 구조

  • 인 메모리 플랫폼
  • 비 관계형 데이터 베이스
  • key-Value 구조 데이터 관리 시스템
  • global cahce
    • 별도 저장소에 데이터를 보관
    • local cache 보단 속도가 느리지만, 중복 데이터 및 데이터 일관성 문제가 없음
  • Redis 프로세스가 다운되면 메모리 안에 저장된 데이터들은 모두 유실
  • 영속성 기능을 제공하기 때문에 재 기동 시 aofrdb(스냅샷)을 이용하여 데이터 모두 복구 가능
  • cluster(분산 저장) 및 master-slave 구조 지원
  • 엔터프라이즈 버전에서는 active-active 및 Partitioned 모드 및 Replicated 모드 선택 가능

3. Ignite 란?

✒️ 간단한 구조

  • 인 메모리 플랫폼
  • 영속성 기능을 제공하기 때문에 재 기동 시 데이터 모두 복구 가능
  • 수평적으로 제거 및 확장이 용이
  • key-Value 구조 및 RDB 구조로도 데이터를 저장
  • RDB 지원으로 SQL DDL,DML,DCL을 완벽하게 지원
  • global cahce
    • 별도 저장소에 데이터를 보관
    • local cache 보단 속도가 느리지만, 중복 데이터 및 데이터 일관성 문제가 없음
  • local cache
    • eh cache와 동일하게 내장 캐시로도 사용 가능
  • Partitioned 모드 및 Replicated 모드 존재
  • near caches 기능 제공
    • client 힙 메모리에 가장 최근 또는 가장 자주 액세스한 데이터를 저장하는 더 작은 로컬 캐시
  • continuous queries 기능 제공
    • ignite 캐시에서 발생하는 데이터 수정 사항을 모니터링
    • 모든 데이터 변경 사항에 대한 알림 가능

📌 여담

  • 상황에 맞게 사용하는게 최고인거 같다.

📚 참고

profile
나도 보기 위해 정리해 놓은 벨로그

0개의 댓글