본문으로 바로가기

왜 Redis를 사용할까?

category DataBase/Redis 2025. 3. 21. 10:57
반응형


최근에 "왜 Redis를 사용하세요?"라는 질문을 받았고, 다음과 같이 대답했습니다.

"싱글 스레드 지원, 메모리 기반 데이터 저장소로 읽기 / 쓰기 속도가 매우 빠릅니다. 또한 가장 활발한 오픈소스이므로 운영 환경에서 안정적으로 운영 가능한 플랫폼이라고 생각합니다."

그러자 "그건 NoSQL 기반 인메모리 데이터베이스는 다 동일하지 않나요?"라는 추가 질문을 받았습니다.

제대로 알지 못해 답변을 못했고, 이번 기회에 학습하고 정리하려고 합니다.


NoSQL이란?

NoSQL은 "Not Only SQL"의 약자로, 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스입니다. NoSQL 데이터베이스는 다음과 같은 특징을 가집니다.

- 비정형 데이터 처리: RDBMS와 달리 고정된 스키마 없이 다양한 형태의 데이터를 저장할 수 있습니다.

- 수평 확장성: 대규모 데이터를 처리하기 위해 여러 서버에 데이터를 분산하여 저장하고 처리할 수 있습니다.

- 유연성: 개발 과정에서 스키마를 변경하거나 새로운 데이터 유형을 추가하는 것이 용이합니다.

NoSQL 데이터베이스 다양한 모델과 종류가 있습니다.

NoSQL 유형 종류
Key-Value Store Redis, Memcached DynamoDB, Riak, Etcd
Document Store MongoDB, CouchDB, Firestore, Amazon DocumentDB
Column-Family Store Cassandra, HBase, ScyllaDB, Bigtable
Graph Database Neo4j, Amazon Neptune, ArangoDB, JanusGraph
Time-Series Database InfluxDB, TimescaleDB, OpenTSDB, Prometheus
Search Engine Elasticsearch, Solr, OpenSearch

 

인메모리, In-memory란?

인메모리, 즉 In-Memory DB는 기존 데이터베이스가 디스크에 데이터를 관리하는 반면, 메모리에 데이터를 업로드하여 사용하는 데이터베이스를 말합니다. 기존 데이터베이스는 데이터를 디스크에 저장하고 읽어오는 방식으로 동작하기 때문에, 디스크 I/O 작업이 성능 병목 현상을 일으킬 수 있습니다. 반면, 인메모리 데이터베이스는 데이터를 메모리에 저장하기 때문에 디스크 I/O 없이 매우 빠른 속도로 데이터를 읽고 쓸 수 있습니다. 대용량 데이터의 증가와 함께 실시간 트랜잭션 처리 요구가 증가하면서, 고성능 처리를 위한 인메모리 데이터베이스가 주목받게 되었습니다. 데이터베이스의 기본적인 기능과 실시간 시스템 기술을 결합하여 Real Time Constraint와 DB Operation 기능을 함께 제공하는 것이 특징입니다. 하지만 메모리에 저장하는 만큼, 주기억장치의 휘발성으로 인한 데이터 손실 위험이 있으며, 이를 해결하기 위한 오류 복구 메커니즘이 중요한 과제입니다.

 

Key-Value Store Redis vs Memcached 비교

  Redis Memcached
데이터 모델 다양한 데이터 구조 지원
(문자열, 해시, 리스트, 셋, 정렬된 셋 등)
단순 키-값 저장
데이터 지속성 RDB, AOF를 통해 데이터 지속성 지원 데이터 지속성 미지원 (휘발성)
트랜잭션 다중 명령어 트랜잭션 지원 트랜잭션 미지원
복제 마스터-슬레이브 복제, 센티널, 클러스터링 지원 복제 지원 미흡
성능 단일 스레드 기반, 복잡한 데이터 구조 처리 가능 멀티 스레드 기반, 단순 데이터 처리 속도 우수
사용 사례 캐싱, 세션 관리, 메시지 큐, 실시간 분석 등 다양한 용도 단순 캐싱에 최적화

 

데이터 지속성

Redis는 기본적으로 메모리 기반 데이터베이스로 동작하지만, 데이터의 지속성을 보장하기 위해 두 가지 방법을 제공합니다.

- RDB (Redis Database): 일정 시간마다 데이터를 스냅샷스냅숏 형태로 디스크에 저장합니다. 빠르고 효율적이지만, 마지막 스냅샷 이후에 데이터는 손실될 수 있습니다.

- AOF (Append-Only File): 모든 쓰기 명령을 로그 형태로 디스크에 기록합니다. 더 안전하지만 성능에 약간의 영향을 미칩니다.

 

트랜잭션

Redis는 전통적인 관계형 데이터베이스처럼 복잡한 트랜잭션을 제공하지 않지만, MULTI, EXEC, WATCH 명령어를 사용하여 트랜잭션을 수행할 수 있습니다. 이 방식은 여러 명령을 하나의 연속된 작업으로 처리하도록 합니다.

- MULTI: 트랜잭션을 시작하는 명령어

- EXEC: 트랜잭션 내의 명령을 실행하는 명령어

- DISCARD: 트랜잭션을 취소하는 명령어

- WATCH: 트랜잭션을 시작하기 전에 특정 키를 감시하고, 해당 키가 변경되면 트랜잭션을 실행하지 않도록 함.

 

어떤 것을 선택해야 할까?

Redis: 복잡한 데이터 모델, 데이터 지속성, 높은 확장성, 다양한 기능이 필요한 경우에 적합합니다.

Memcached: 단순 캐싱, 높은 성능, 낮은 메모리 사용량, 간단한 구조가 필요한 경우에 적합합니다.

 

결론

Redis와 Memcached는 각각의 장단점을 가지고 있으며, 애플리케이션의 요구사항에 따라 적절한 데이터베이스를 선택해야 합니다.

Redis는 다양한 기능과 높은 확장성을 제공하여 복잡한 애플리케이션에 적합하며, Memcached는 단순 캐싱에 최적화된 높은 성능을 제공합니다.


다시 질문 받으면 아래와 같이 대답해야겠습니다.

"왜 Redis를 사용하세요?"

"Redis는 인메모리 기반의 빠른 처리 속도와 싱글 스레드 아키텍처의 효율성을 강점으로 하는 Key-Value Store입니다. Memcached, DynamoDB와 같은 다른 Key-Value Store와 비교했을 때, Redis는 다양한 데이터 구조와 기능을 제공하며, 데이터 지속성 측면에서도 우수합니다."

반응형

'DataBase > Redis' 카테고리의 다른 글

Redis 란?  (0) 2019.12.18