Является ли memcached динозавром по сравнению с Redis?

Я немного поработал с memcached в последние недели и только что узнал о Redis. Когда я прочитал эту часть своего текста, у меня внезапно появилось теплое, уютное чувство в животе:

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

Звучит потрясающе. Я также нашел эту страницу с ориентирами: http://www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison

Итак, честно говоря, действительно ли memcache этот старый динозавр является плохим выбором с точки зрения производительности по сравнению с этим новичком по имени Redis?

Я раньше не слышал о Redis, поэтому подход к моему вопросу!

Ответ 1

Memcache - отличный инструмент, еще и ОЧЕНЬ надежный.

вместо того, чтобы смотреть на эту проблему с точки зрения, спускающейся с того, кто быстрее на < 100 мс, посмотрите на производительность на "класс" программного обеспечения.

  • Использует ли он только локальный ram? → быстрый
  • Использует ли он удаленный барабан? → быстрый
  • Использует ли он RAM и hardddisk → oh hurm.
  • Использует ли он только harddisk → run!

Ответ 2

В зависимости от того, что вам нужно, в общем, я думаю, что:

  • Вы не должны слишком заботиться о выступлениях. Redis быстрее для ядра с небольшими значениями, но memcached может использовать несколько ядер с одним исполняемым и TCP-портом без помощи клиента. Также memcached быстрее с большими значениями порядка 100k. Недавно Redis много улучшал о больших значениях (нестабильная ветвь), но в этом случае все еще memcached работает быстрее. Дело в том, что ни один, ни другой, скорее всего, не станут вашим узким местом для запроса в секунду, который они могут доставить.
  • Вы должны заботиться об использовании памяти. Для простых пар ключ-значение memcached обладает большей эффективностью памяти. Если вы используете хеши Redis, Redis более эффективен с точки зрения памяти. Зависит от варианта использования.
  • Вы должны заботиться о сохранении и репликации, две функции доступны только в Redis. Даже если ваша цель состоит в создании кеша, это помогает в том, что после обновления или перезагрузки ваши данные все еще существуют.
  • Вы должны заботиться о том, какие операции вам нужны. В Redis существует много сложных операций, даже если вы рассматриваете использование кэширования, вы часто можете делать намного больше за одну операцию, не требуя обработки данных на стороне клиента (иногда требуется много ввода-вывода). Эти операции часто бывают быстрыми, как GET и SET. Поэтому, если вам не нужно просто GET/SET, но более сложные вещи, Redis может многое помочь (подумайте о кешировании временной шкалы).

Без использования случай трудно выбрать прямо сейчас, но я думаю, что для многих вещей Redis имеет смысл, так как даже когда вы не хотите использовать его как БД, будучи намного более способным, вы можете решить больше проблем, а не только кеширование, но даже обмен сообщениями, ранжирование и т.д.

P.s. конечно, я мог быть предвзятым, так как я ведущий разработчик проекта Redis.

Ответ 3

Итак, честно говоря, действительно ли memcache, что старый динозавр - плохой выбор с точки зрения производительности, когда по сравнению с этим новичком Redis?

  • Сравнивая набор функций, тогда Redis имеет больше функциональности;
  • Сравнение легкости установки Redis также намного проще. Никаких зависимостей не требуется;
  • Сравнение активного развития Redis также лучше;
  • Я считаю, что memcached немного быстрее, чем Redis. Он не касается диска вообще;
  • Мое мнение таково, что Redis лучший продукт, чем memcached.

Ответ 4

То, что memcached делает, что Redis не делает, - это наименее недавно используемое выселение значений из кеша. С memcached вы можете безопасно установить столько значений, сколько захотите, и когда они переполняют память, те, которые вы не использовали недавно, будут удалены. С Redis вы можете только приблизиться к этому, установив тайм-аут на все; когда ему нужно освободить память, он будет смотреть на три случайных ключа и удалить ту, которая ближе всего к истечению.

Это главное отличие, если вы просто используете его как кеш.

Ответ 5

Вы также можете посмотреть на Membase.

http://www.northscale.com/products/membase_server.html

Я не использовал его, но, похоже, он похож на Redis на то, что это хранилище KV с памятью с сохранением. Основные отличия от того, что я вижу:

  • Redis обладает значительно большей способностью манипулировать данными (упорядоченные наборы и т.д.).
  • В Redis есть ожидающий проект Redis Cluster для добавления горизонтальной масштабируемости
  • Redis имеет один уровень разгрузки данных на диск (VM) на основе гибридного алгоритма, который рассматривает как LRU, так и размер объекта.

  • Membase использует протокол memcached wire - полезен в качестве пути обновления для существующих приложений

  • Membase настроен для масштабирования по горизонтали с использованием распределенного подхода хеш-таблицы
  • Membase может поддерживать несколько уровней разгрузки данных с использованием подхода LRU (очень редко используется на диске, редко что-то происходит на SSD, частые вещи остаются в ОЗУ)
  • Не уверен в возможностях TTL в Membase.

Выбор может зависеть от степени, в которой ваше приложение может использовать дополнительные функции обработки данных в Redis.