Redis vs Memcached

Тема дорожной карты · Redis

Redis и Memcached — классическое сравнение в пространстве распределённых кэшей: оба являются in-memory хранилищами «ключ — значение», оптимизированными для низкозадержкового кэширования, однако Redis предлагает значительно более широкий набор функциональности. Memcached — это чистый кэширующий слой, хранящий только обычные строки, масштабируемый горизонтально через шардирование на стороне клиента и намеренно избегающий персистентности, что делает его проще, но менее универсальным по сравнению с Redis. Redis поддерживает богатые структуры данных (списки, множества, отсортированные множества, хэши, потоки), необязательную персистентность через RDB и AOF, репликацию, Redis Cluster для автоматического шардирования и Redis Sentinel для высокой доступности — возможности, которых у Memcached нет. При выборе между Redis и Memcached команды, которым нужно только простое кэширование объектов с максимальной пропускной способностью, могут предпочесть Memcached, тогда как команды, которым нужны надёжность, сложные типы данных, pub/sub или Lua-скриптинг, неизменно выбирают Redis. Для большинства современных приложений Redis стал стандартным in-memory хранилищем, поскольку охватывает весь спектр от эфемерного кэширования до надёжного хранения сессий и очередей.

Как это работает

Redis vs Memcached — in-memory key-value хранилище с опциональной персистентностью, поддерживающее богатые типы (strings, lists, hashes, sets, sorted sets, streams, geospatial, HyperLogLog, bitmaps). Однопоточный для исполнения команд (кроме I/O threads в 6+) — даёт строгую согласованность на отдельных командах и избегает сложности локов. Команды атомарны; pipeline + MULTI/EXEC батчат. Используется как кеш, очередь, pub/sub брокер, leaderboard, session store, backend для distributed lock.

Когда применять

Redis — когда нужны (а) sub-ms чтения/записи маленьких значений, (б) атомарные счётчики/локи/rate-limit, (в) ephemeral данные (TTL нативно), (г) pub/sub fan-out, (д) leaderboard через sorted sets. Не используйте Redis как primary durable store для важных данных — RAM конечен, persistence с оговорками; PostgreSQL — durable, Redis — быстр. Valkey (форк Redis) — где лицензия Redis беспокоит.

Типичные ошибки

Ловушки Redis vs Memcached: хранение огромных блобов в Redis (RAM-bloat — используйте object storage); Redis как единственная копия важного state (крэш без persistence = полная потеря); пароли в Redis без TLS или auth (requirepass); не выставлен maxmemory + eviction policy (OOM убивает процесс). Опасные команды (FLUSHALL, KEYS, DEBUG) — переименовать или отключить в production.

Связанные понятия

Полезные ресурсы