Вопрос: Redis против Memcache


Я немного новичок в Memcache и Redis, и я пытаюсь понять разницу между ними и тем, что на самом деле есть.

Как мне объяснили, Memcache - это решение для кэширования базы данных. Данные из часто выполняемых запросов кэшируются для повторного использования в более поздней точке, ускоряя время отклика. Это точное описание?

Что насчет Редиса? Это работает аналогичным образом? Другими словами, он кэширует данные, которые он получает из бэкэнд-базы данных? Я продолжаю читать, что Redis - это решение для хранения ключевых значений, которое для меня похоже на замену сервера базы данных на решение кэширования db.

Любая помощь в понимании того, что есть у каждого, и в чем отличия, будет с большой благодарностью.

благодаря штифтик


5
2017-12-17 23:35


Источник




Ответы:


Существует действительно одно ключевое различие между ними.

  • Redis = кеширование ключа / значения
  • Memcached = кэширование объектов

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

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

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

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


2
2017-12-17 23:43



Этот ответ неверен. В Redis нет практически ничего, кроме redis. Redis более гибкий, а не наоборот. - Carl Zulauf
Этот ответ неверен. Redis - это больше, чем служба кеширования. Это полноценный сервер структуры данных, способный обрабатывать очереди, списки, карты, атомные номера и т. Д. Он имеет мощные конфигурации долговечности и может работать как первичная база данных в зависимости от вашего варианта использования, кроме того, это наиболее распространенный случай использования кеша. - Alexander Jardim
memcahced имеет IMHO почти ничего для хранения объектов - согласитесь, клиент может хранить объекты, но у ядра есть не намного больше, чем последовательность байтов. Вид «технического маркетинга» - Jacek Cz


Memcached - это хранилище ключей / значений в памяти. Redis можно использовать таким образом, но намного больше.

Пути Memcached и Redis похожи

Оба могут кэшировать результаты базы данных или все, что вы захотите кэшировать.

Оба могут хранить простые строковые значения для ключа. Предыдущий ответ показал, что memcached более гибкий, и это неверно. Хранение «того, что вы хотите» в memcached включает в себя взятие объектов и сериализацию / маршалинг их в строки. Redis поддерживает это одинаково хорошо. Redis, как правило, более гибкий даже при хранении ваших сериализованных объектов, поскольку размер максимального значения по умолчанию намного больше (1MB против 512MB).

Оба сохраняют значения в памяти и являются чрезвычайно быстрыми и эффективными, часто сгибание бутылок по полосе пропускания сети или ввода-вывода с памятью без интенсивного использования ЦП. Оба они очень масштабируемы. Для обоих существуют отличные инструменты для управления и мониторинга. Коммерческие кластерные решения существуют для обоих. Начиная с версии 3.0, redis включает встроенную поддержку кластеризации, которую memcached не предлагает.

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

Супердисплей Redis

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

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

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

Redis предлагает Паб / суб (Publish / Subscribe). Это позволяет создавать каналы и подписываться на них одним или несколькими клиентами, обеспечивая эффективный высокоскоростной механизм связи в реальном времени. Это может быть отличным решением для межпроцессорной, межзадачной или межсерверной связи.

Redis предлагает Поддержка Lua-скриптов, Это позволяет вам делать всевозможные новые вещи. Одним из важных примеров будет выполнение нескольких зависимых команд redis атомарно и с одним вызовом redis. Сценарии Lua легко подбирать, а скрипты работают эффективно и атомарно.

Вывод

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

Если вы уже используете memcached, переключение на redis может быть очень трудным для незначительной выгоды. Вычислите redis близко и решите для своей ситуации, будут ли затраты на перераспределение перевешивать выгоды. Если это так, придерживайтесь memcached. Он по-прежнему является отличным, стабильным, закаленным программным обеспечением.


8
2017-10-05 20:39



Я не собираюсь оспаривать то, что вы написали, но ... Это звучит ужасно, как маркетинг. Если вы работаете в Pivotal или другой компании, специализирующейся на Redis, то обычно оставляйте заговорщику перед написанием такого сообщения. Если нет, вы можете также предоставить короткий отказ от объявления о том, что вы этого не сделали. В противном случае, естественно, предубеждение является подозрительным. - dyasny
Я не работаю для Pivotal или любой компании, занимающейся разработкой redis. Я просто разработчик программного обеспечения, который работал со многими различными хранилищами данных и использовал redis у моего нынешнего и предыдущего работодателя и в проектах для хобби. У меня есть страсть к данным и распознавание удивительного инструмента, когда я его вижу. Я немного евангелизирую? Да, но только потому, что он заслуживает похвалы. Я не получаю никаких компенсаций за это каким-либо образом, монетами или иным образом. Если есть какие-то конкретные вопросы с моим ответом, пожалуйста, дайте мне знать. - Carl Zulauf
@CarlZulauf +1 :) - Itamar Haber
@CarlZulauf спасибо, хорошо, как я уже сказал, просто принято предлагать короткий отговорчик с лайнером, прежде чем петь такие похвалы. - dyasny