
Memcached는 고성능의 분산 메모리 캐시 시스템으로, 주로 데이터베이스 부하를 줄이고 애플리케이션의 성능을 향상시키기 위해 사용된다.
데이터를 메모리에 저장하여 빠른 읽기/쓰기 속도를 제공한다.
Redis는 오픈 소스, 고성능의 인메모리 데이터 구조 저장소로, 다양한 데이터 구조(Hashes, Lists, Sets 등)를 지원하며, 캐시뿐 아니라 데이터 저장 및 메시징 큐로도 사용된다.
Redis는 데이터 영속성 기능도 제공하여 데이터 복구가 가능하다. (근데 아무생각 없이 막 쓰다가는 큰일이 날 수도 있다는 사실..)
오늘은 강의가 매우 짧고 내용도 별로 없어 들은 내용을 있는 그대로 정리하지 않고 쓰려고 한다.
어차피 Redis를 사용하지 MemCached를 사용할게 아니니깐 말이다. 그냥 이런게 있구나 싶은 느낌으로만 기록할 생각이다.
MemCached 는 다양한 타입을 지원하지 않는다. 따라서 범용성 떨어진다. 또한 영속성 지원도 하지 않는다. RabbitMQ 및 Kafka처럼 따로 백업을 위해 디스크를 사용하지 않아 데이터 영속성이 보장되지 않는 것이다.
그리고 간과할 수 없는 부분이 있는데, Redis에 비해서 시장의 파이가 너무 작다. 따라서 발전속도 및 업데이트의 주기가 너무 늦다는 단점이 존재한다.
하지만 Redis에 비해 좋은 점도 있다.
먼저, 검색 시간이 매우 짧다. 데이터 자체를 Hash 형태로 다루고 있기 때문이다.
( 다만, Redis가 느리다는 것이 아니다. MemCached가 Redis에 비해서 빠른 것이지 Redis 자체도 상당히 빠른 속도를 갖고있다. )
또 한정적인 타입을 제공하는것이 어떻게 보면 단점으로 느껴질 수도 있지만, 반대로 생각해보면 데이터 통신을 하는데 있어서 메모리가 적게 소모된다. 즉, 리소스 낭비가 Redis에 비해서 적다는 의미다. ( 다뤄야 하는 타입이 없기 때문에 메타 데이터 자체가 굉장히 작은 사이즈를 유지하고있다고 한다.. )
그렇다면 어떤 것을 사용하는게 좋을까 ?
데이터의 구조가 단순하며 데이터 유실이 되어도 상관 없는 경우메모리 사용량이 압도적으로 적은 MemCached를 쓰는 것을 고려할 수 있다. 그리고 단순 캐시용도로 사용하는 경우에도 큰 상관은 없다고 한다.
하지만 실제로 실무에서 개발하고 유지보수를 하다보면 항상 새로운 요청을 받게 되는데, 이러한 요청 사항에 유연하게 대처가 가능한 Redis를 사용하는게 더 범용적이지 않을까 생각한다.
성능만을 추구한다면 MemCached를 사용하는 것도 좋으나 개발자의 입장에서는 매번 변하는 요구사항에 따른 환경을 구축할 수 있는 환경 자체도 매우 중요하다. 따라서 범용적인 사용이 가능한 Redis를 더 권고한다.