Широко упоминается, что Redis "Blazing Fast" и mongoDB тоже быстр. Но я не могу найти реальные цифры, сравнивая результаты двух. Учитывая аналогичные конфигурации, функции и операции (и, возможно, показывая, как фактор изменяется при разных конфигурациях и операциях) и т. Д., Redis в 10 раз быстрее, в 2 раза быстрее, в 5 раз быстрее?
Я говорю только о производительности. Я понимаю, что mongoDB - это другой инструмент и имеет более богатый набор функций. Это не дебаты "Является ли mongoDB лучше, чем Redis". Я спрашиваю, с какой разницей Redis превосходит mongoDB?
На этом этапе даже дешевые тесты лучше, чем отсутствие тестов.
mongodb
benchmarking
redis
Homer6
источник
источник
Ответы:
Грубые результаты из следующего теста: 2x запись, 3x чтение .
Вот простой тест в python, который вы можете адаптировать к вашим целям. Я смотрел на то, насколько хорошо каждый из них будет выполнять простую установку / получение значений:
Результаты для mongodb 1.8.1 и redis 2.2.5 и последней версии pymongo / redis-py:
Взять результаты с крошкой соли конечно! Если вы программируете на другом языке, используете другие клиенты / другие реализации и т. Д., Ваши результаты могут отличаться. Не говоря уже о том, что ваше использование будет совершенно другим! Лучше всего сравнить их самим, именно так, как вы собираетесь их использовать. Как следствие, вы, вероятно, найдете лучший способ использовать каждый из них. Всегда ориентируйтесь на себя!
источник
Пожалуйста, проверьте этот пост об анализе эффективности вставки Redis и MongoDB:
источник
Хороший и простой тест
Я попытался пересчитать результаты снова, используя текущие версии redis (2.6.16) и mongo (2.4.8), и вот результат
Также в этом блоге сравниваются оба из них, но используется node.js. Он показывает эффект увеличения количества записей в базе данных вместе со временем.
источник
Числа будет трудно найти, так как они не совсем в одном месте. Общий ответ заключается в том, что Redis на 10 - 30% быстрее, когда набор данных помещается в рабочую память одного компьютера. Как только этот объем данных превышен, Redis завершается ошибкой. Mongo будет замедляться на величину, которая зависит от типа нагрузки. Для типа нагрузки «только для вставки» один пользователь недавно сообщил о замедлении на 6–7 порядков (от 10 000 до 100 000 раз), но в этом отчете также признавалось, что имелись проблемы с конфигурацией и что это была очень нетипичная рабочая нагрузка. Нормальное чтение тяжелых нагрузок анекдотически медленно примерно в 10 раз, когда некоторые данные должны быть прочитаны с диска.
Вывод: Redis будет быстрее, но не намного.
источник
Вот отличная статья о производительности сессий в рамках Tornado около 1 года. Он сравнивает несколько разных реализаций, среди которых Redis и MongoDB. График в статье показывает, что Redis отстает от MongoDB примерно на 10% в этом конкретном случае использования.
Redis поставляется со встроенным тестом, который будет анализировать производительность машины, на которой вы находитесь. В вики Benchmark для Redis есть тонна необработанных данных . Но вам, возможно, придется немного осмотреться в поисках Монго. Как здесь , здесь , и некоторые случайные числа для полировки (но это дает вам отправную точку для запуска некоторых тестов MongoDB самостоятельно).
Я считаю, что лучшим решением этой проблемы является проведение тестов самостоятельно в тех ситуациях, которые вы ожидаете.
источник
В моем случае определяющим фактором при сравнении производительности является MongoDb WriteConcern, который используется. Большинство драйверов mongo в настоящее время устанавливают для WriteConcern по умолчанию значение ACKNOWLEDGED, что означает « запись в ОЗУ» ( Mongo2.6.3-WriteConcern ), в этом отношении он был очень сопоставим с redis для большинства операций записи.
Но реальность зависит от потребностей вашего приложения и настроек производственной среды, вы можете изменить это значение на WriteConcern.JOURNALED (записано в oplog) или WriteConcern.FSYNCED (записано на диск) или даже записано в наборы реплик (резервные копии). если необходимо.
Тогда вы можете начать видеть некоторое снижение производительности. Другие важные факторы также включают, насколько оптимизированы ваши шаблоны доступа к данным, индекс пропуска% (см. Mongostat ) и индексы в целом.
источник
Я думаю, что 2-3X на показанном тесте вводят в заблуждение, поскольку, если вы также зависите от аппаратного обеспечения, на котором вы его используете - по моему опыту, чем «сильнее» машина, тем больше разрыв (в пользу Redis) будет, вероятно, из-за того, что бенчмарк достигнет предела памяти довольно быстро.
Что касается объема памяти - это отчасти верно, так как есть также способы обойти это, есть (коммерческие) продукты, которые записывают данные Redis на диск, а также кластерные (многозадачные) решения, которые преодолевают объем памяти ограничение.
источник