공통점

둘 다 인메모리 캐시다.
즉 메모리를 쓰니까 물리적인 메모리 용량을 초과해서 저장할 수 없는 것으로 알고 있다.
아마 디스크 영역을 가상 메모리로 사용해서 메모리 용량을 초과할 수 있겠지만 swap이 일어나기 때문에 성능이 급격하게 떨어질 것이다.
또한 둘 다 키/밸류 쌍으로 저장하고 NoSQL이다.
NoSQL이다보니 RDB와 달리 별도의 테이블이나 스키마가 없다는 뜻인 듯…?

Memcached

레디스가 나오기 전까지 인메모리 캐시의 1인자인 듯? 현재는 레디스에게 왕관을 뺏긴 것 같다.
Memcached는 아주 간단하다.
String만 저장 가능하다.
그리고 데이터를 정말 메모리에만 저장하기 때문에 서비스를 죽여버리면 데이터가 전부 날아간다.

Redis

String, Set, Sorted Set, Hash, List 등의 자료구조를 저장할 수 있다.
저장된 데이터에 대해서 연산 작업(합/교집합, range query 등등)이 가능하다.
Disk에 데이터를 저장해서 서비스가 죽어도 다시 살리면 데이터가 유실되어 있지 않는다. (백업 전략에 따라서 다를테지만…)
하지만 데이터를 지우고 다시 쓸 때 Fragment (메모리 이빨 나가는 거)가 많이 발생한다.