2010-05-20 2 views
171

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

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

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

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

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

+0

Интересное дополнительное чтение: http://nosql.mypopescu.com/post/519078332/memcached-on-top-of-redis – Industrial

+9

этот ruturaj тест не действительно стоит много внимания – dsomnus

+0

@ user373345 Я согласен, тест ruturaj делает не используйте соответствующие контрольные показатели, поэтому, скорее всего, различные клиенты влияют на тест. –

ответ

68

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

вместо того, чтобы смотреть на эту проблему с точки зрения, спустившись с тем, кто быстрее в диапазоне 0 мс, посмотрите на производительность на «класс» программного обеспечения.

  • Использует ли он только локальный барабан? -> быстрый
  • Использует ли он удаленный барабан? -> fast
  • Использует ли он RAM и hardddisk -> oh hurm.
  • Использует ли он только жесткий диск -> работает!
+3

Нет возможности обрабатывать репликацию с memcache, о котором я знаю. Memcache предназначен исключительно для кэша. Если элемент очищен/потерян, его необходимо перестроить. Я не использовал это раньше и не оценил его, но это может вас заинтересовать. http://code.google.com/p/memagent/ – Daniel

+1

Membase поддерживает протокол memcached, а также постоянство и репликацию. –

+1

Недавно я увидел связанный ethernet через 4 порта. 4 x 44 МБ/с. Это делает баран еще более ценным, предполагая, что вы можете подключиться к сети Ethernet! – Daniel

78

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

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

redis касается только диска, если вы его расскажете. Обычно он выполняет fsync каждую секунду или около того -> вы не заметите его –

+1

@Marc yup. Я также считаю, что вы можете сказать, что не касаетесь диска вообще, но стандарт я считаю, что он всегда fsyncs прямо сейчас? – Alfred

+1

@Marc, @Alfred Вы оба правы. Стандартная конфигурация (из текущей исходной версии) использует устойчивость на основе дисков и использует fsync каждую секунду. (см. https://github.com/antirez/redis/blob/master/redis.conf) –

46

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

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

+27

См. Http://antirez.com/post/redis-as-LRU-cache.html – Alfred

12

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

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

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

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

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

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

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

+0

Привет, Дин, спасибо за сообщение. Я обязательно проверю это. Могу ли я использовать Membase в PHP? – Industrial

+4

Поскольку Membase использует протокол memcached, любой из клиентов memcached должен работать: http://wiki.membase.org/bin/view/Main/Clients – HikeOnPast

+0

Membase поддерживает TTL. Все поддержки реализации Memcache устанавливаются с истечением срока действия. https://github.com/memcached/memcached/blob/master/doc/protocol.txt#L79 – Saurav

196

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

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

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

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

+65

+1 для отличного раскрытия в конце – NateDSaint

+6

Я не уверен, что это ошибка языка, но если вы приводят ваш аргумент: «В общем, я думаю, что вам не стоит заботиться о производительности», это серьезная причина для беспокойства. Redis может быть очень хорош для определенных классов проблем, но, традиционно, memcache был специально использован для решения проблем производительности с постоянными базами данных. Я также думаю, что вопиющее упущение из вашего списка - зрелость продукта. Memcache - это зрелый продукт с примерно десятилетним опытом. Redis многообещающий, но существует только около трех лет. – DougW

+0

@DougW Вы принимаете эту фразу из контекста. Это имеет гораздо больший смысл, когда вы читаете фразу, закрывающую абзац сразу после: «Дело в том, что ни один, ни другой, скорее всего, не станут вашим узким местом для запроса в секунду, который они могут доставить» – Dinei

0

Hazelcast поддерживает устройства с Memcached от протоколов нативно

http://hazelcast.org/docs/latest/manual/html-single/hazelcast-documentation.html#memcache-client

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

 Смежные вопросы

  • Нет связанных вопросов^_^