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. 비교
| 항목 | Redis | Memcached |
|---|---|---|
| 구분 | 기능이 많은 데이터 저장소형 프로그램 | 단순하고 빠른 캐시 전용 프로그램 |
| 핵심 역할 | 캐시 + 데이터 저장소 (확장형) | 캐시 전용 (경량) |
| 데이터 구조 | 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.