Notice
Recent Posts
Recent Comments
Link
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 개발 일상 기록

Reids vs Memcached 본문

Redis

Reids vs Memcached

느린 거북이 2021. 7. 5. 14:11

NoSQL 중 캐싱 전략에 자주 사용되는 Redis, Memcached이 있습니다. 둘 간의 특성에 대해서 알아보겠습니다.

 

 

 

Memcached

 

1. Memcached란?

 

무료로 사용할 수 있는 오픈소스이며 분산 메모리 캐싱 시스템입니다. 데이터 베이스의 부하를 줄여 동적 웹 어플리케이션의 속도개선을 위해 사용되기도 합니다. DB나 API호출 또는 랜더링 등으로부터 받아오는 결과 데이터를 작은 단위의 key-value형태로 메모리에 저장하는 방식입니다. Memcached는 필요량보다 많은 메모리를 가졌을 때, 시스템으로부터 메모리를 사용하고 필요로하는 메모리가 부족한 경우 이를 더 쉽게 가져다 사용할 수 있도록 만들어 줍니다.

 

2. Memcached의 장점

 

Memcached는 DB/API 통신을 중리기 위해 데이터를 캐싱처리하는 데에 사용하면 좋은 캐시입니다. Memcached같은 경우 트래픽이 몰려도 응답 속도는 안정적인 편입니다.

 

3. Memcached의 단점

 

데이터 타입과 API가 다양하지 않습니다. key-value만 지원하고 있습니다.

 

4. 언제 Memcached를 사용해야 할까?

 

첫번째로 작고 변하지 않는 데이타 예를들어 HTML 코드의 부분을 캐싱할때 내부 메모리 관리가 Redis 만큼 복잡하지 않아 능률적이기 떄문에 Memcached 는 메타 데이타에 있어 비교적 작은 메모리를 사용합니다. Memcached 에서 지원하는 유일한 데이타 타입인 String은 오로지 읽기 전용이고 더이상 처리가 필요 없기 때문에 데이터를 저장하기에 좋습니다. Memcached 는 수평적 확장에서 Redis보다 약간의 좋은 점이 있습니다. 기능 구현과 디자인 확장을 하는데 있어 쉽지만, Redis도 3.0이후에 포함이 되어있습니다.

Reids

1. Redis란?

 

Redis는 “REmote DIctionary System”의 약자로 메모리 기반의 Key-Value Store이며, 리스트, 해시, 셋 정렬된 셋 등 여러 형식의 자료구조를 지원합니다. NoSQL DBMS로 분류되기도 하고, memcached와 같은 In memory 솔루션으로 분리 되기도 합니다. 메모리에 상주하면서 RDBMS의 캐시 솔루션으로서 주로 사용되며 인스타그램, 라인, StackOverflow, 블리자드 등 여러 소셜 서비스에서 사용하는 검증된 오픈소스 솔루션입니다.

 

2. Redis의 장점

 

디스크에 데이터를 기록하고 있기 때문에, Redis 메모리가 날라가도 데이터를 복구할 수 있습니다. 다양한 데이터 포맷을 지원하며 다양한 API를 지원합니다. 그리고 데이터의 정책도 Memcached보다 다양하며 한 개의 키에 저장할 수 있는 VALUE의 범위가 512MB으로 큽니다.

 

3. Redis의 단점

 

Redis는 싱글 스레드입니다. 스냅샷을 뜰 때, 자식 프로세스를 하나 만든 후 새로 변경된 메모리 페이지를 복사해서 사용합니다. Redis를 사용할 때는 데이터 변경이 잦기 때문에 실제 메모리 양만큼의 메모리를 자식 프로세스가 복사하게 됩니다. 그래서 실제로 필요한 메모리 양보다 더 많은 메모리를 사용하게 됩니다. 또한, Redis는 메모리를 직접 처리할 수 없어서 메모리 파편화가 발생하기 쉽다는 점이 있습니다.

 

4. 언제 Redis를 사용해야 할까?

 

강제적을 Memcachd 를 사용해야 하거나 Memcachd를 사용해야하는 사항이 아니고서는 항상 Redis 를 사용하는 것이 좋습니다.

Memcached vs Reids 정리

1. 특성

  Redis Memcached
저장소 In-Memory Storage
저장 방식 Key-Value
데이터 타입 String, Set, Sorted Set, Hash, List String
데이터 저장 Memory, Disk Only Memory
메모리 재사용 메모리 재사용 하지 않음(명시적으로만 데이터 삭제 가능) 메모리 부족시 LRU 알고리즘을 이용하여 데이터 삭제 후 메모리 재사용
스레드 Single Thread Multi Thread
캐싱 용량 Key, Value 모두 521MB Key name 250 byte, Value 1MB

 

2. Reids < Memcached

 

* 멀티스레드를 아키텍처를 지원합니다.

Single Thread인 Redis에 비해 Memcached는 Multi Thread를 지원하기 때문에 서버 Scale up에 유리합니다.

 

* Redis에 비해 적은 메모리를 요구합니다.

HTML과 같은 정적인 데이터를 캐싱하는 것에는 Memcached가 유리합니다. Redis는 Copy&Write 방식을 사용하기 때문에 실제 사용하는 메모리보다 더 많은 메모리를 요구합니다.

 

3. Reids > Memcached

 

* 다양한 자료구조를 지원합니다.

 String만 지원하는 Memcached에 비해 Redis는 더욱 다양한 자료구조를 지원하여 더 다양한 타입의 자료를 저장할 수 있습니다. 이는 Memcached에 비해 Redis가 가지는 강력한 장점 중 하나입니다.

 

* 데이터 복구가 가능합니다.

프로세스의 돌발 종료, 서버 종료 등 돌발 상황에서 Memcached는 모든 데이터가 유실되지만, Redis는 데이터를 Disk에도 저장하기 때문에 메모리에서 유실된 데이터를 복구할 수 있습니다. 

 

* 다양한 Data Eviction 정책을 지원합니다.

Memcached는 LRU 알고리즘을 통한 Eviction을 지원합니다. 하지만 Redis는 6가지 Eviction정책을 통해 더욱 세밀한 Eviction 제어가 가능합니다.

 

Memcached를 사용해야만 하는 경우를 제외하고는 Redis를 사용하는 것이 더 용이합니다.

'Redis' 카테고리의 다른 글

[REDIS] Redis란?  (0) 2021.05.26
Comments