DEV Community

faangmaster
faangmaster

Posted on • Edited on

Memcached vs Redis

Memcached и Redis являются одними из наиболее популярных и широко применяемых реализаций распределённого кэша в мире. Они хорошо масштабируются, обладают высокой производительностью и обеспечивают очень низкую задержку.

Memcached

Memcached был создан в 2003 году. Это распределённый кэш, который хранит данные в виде пар ключ-значение. И ключ, и значение представлены строками, поэтому все данные перед сохранением должны быть сериализованы в строки.
У Memcached есть клиент и серверная часть. Все сервера используют shared-nothing архитектуру. Сервера не знают друг о друге. Они не взаимодействуют друг с другом, не шарят данные и не синхронизуются.
Благодаря такому дизайну, Memcached позволяет достич гигантской производительности и низкой задержки. Он может обрабатывать миллионы запросов в секунду. Благодаря такой архитектуре Memcached хорошо масштабируется горизонтально.
Image description

Memcached в Facebook

Facebook является одним из самых масштабных примеров использования Memcached. Memcached был создан в 2003 году, а Facebook — в 2004 (Redis был создан в 2009 году). Memcached прост в использовании, хорошо масштабируется горизонтально и стал очевидным выбором в качестве распределённого кэша.
Примеры команд Memcached:

get <key_1> <key_2> <key_3> ...
set <key> <value> ...
delete <key>
Enter fullscreen mode Exit fullscreen mode

По состоянию на 2013 год Facebook использовал более 800 серверов с 28 терабайтами RAM. На данный момент эти числа сильно больше. Он находится между web частью и MySQL базой. Facebook на тот момент удалось достичь 95% cache hit rate.
Презентацию можно посмотреть тут: Facebook and memcached - Tech Talk
High-level дизайн кэширования в Facebook выглядит следующим образом:

Image description

Из 50M запросов от web layer, только 2.5M достигают базы, остальные обрабатываются кэшем.

Redis

Redis это больше чем просто распределенный in-memory cache. Он может использоваться как cache, in-memory key-value база данных и message broker. В отличие от Memcached, Redis позволяет хранить различные структуры данных, а не только строки (list, set, hash map и т.д.).

В Redis существует два способа персистинга данных на диск:

  • Redis RDB Dump. Периодически, через равные промежутки времени, делается снапшот данных на диск в виде бинарного файла формата Redis RDB Dump.

  • AOF (Append only file). Все операции по изменению данных логируются в файл (append-only file) в бэкграунд процессе.

Статья дополняется. Статья будет дополнена описанием Redis по сравнению в Memcached.

Top comments (0)