Что это
Redis и Memcached — системы хранения данных в оперативной памяти (In-memory), используемые для ускорения доступа к данным. Redis является хранилищем структур данных, в то время как Memcached — это классический распределенный кэш объектов.
| Параметр | Redis | Memcached |
|---|---|---|
| Типы данных | Строки, списки, хэши, множества, Geo, Bitmaps | Только строки (Strings) |
| Персистентность | Да (RDB, AOF) | Нет |
| Репликация | Да (Master-Slave) | Нет (через сторонние решения) |
| Многопоточность | Ограниченно (I/O потоки с v6.0) | Полная поддержка |
| Транзакции | Да | Нет (только атомарный CAS) |
Производительность
Обе системы обеспечивают задержку (latency) менее 1 миллисекунды. Memcached эффективнее использует многоядерные процессоры благодаря многопоточной архитектуре, что дает преимущество при обработке простых пар ключ-значение на больших объемах трафика. Redis, работая преимущественно в одном потоке, может уступать в сырой пропускной способности на чтение/запись строк, но обходит Memcached при работе со сложными структурами, так как обработка происходит на стороне сервера без необходимости пересылать весь объект клиенту.
Конфигурация и сложность
Memcached максимально прост в настройке: управление памятью реализовано через Slab Allocation, что исключает фрагментацию, но ограничивает размер объекта (по умолчанию 1 МБ). Redis требует детальной настройки redis.conf, особенно в части снимков данных на диск и политик вытеснения (Eviction policies). В Redis доступно 8 стратегий вытеснения, включая volatile-lru и allkeys-lfu, тогда как в Memcached используется только LRU.
Когда выбрать что
- Выбирайте Redis, если: требуется кэширование сложных объектов, реализация очередей сообщений (Pub/Sub, Stream), хранение сессий с сохранением на диск или создание гео-сервисов.
- Выбирайте Memcached, если: нужен максимально простой и стабильный кэш для строк, планируется горизонтальное масштабирование на сотни узлов и отсутствуют требования к сохранению данных после перезагрузки.
Стоимость / лицензия
Memcached распространяется под лицензией BSD. Redis с 2024 года перешел на проприетарные лицензии RSALv2 и SSPLv1, что ограничивает его использование для провайдеров облачных услуг, хотя исходный код остается доступным для большинства разработчиков. Существуют форки, такие как Valkey, сохраняющие открытую лицензию.
Экосистема и интеграции
Redis обладает развитой экосистемой модулей (RedisJSON, RediSearch) и поддержкой во всех современных фреймворках. Memcached поддерживается консервативными стеками (PHP, старые Java-приложения) и облачными провайдерами как стандартный сервис кэширования без лишних функций.
Вердикт
Для современных приложений Redis является стандартом де-факто благодаря гибкости и набору функций. Memcached остается актуальным для узких задач высоконагруженного кэширования, где критична многопоточность и минимальное потребление ресурсов на управление метаданными.