Зачем использовать Redis вместо MongoDb для кэширования?

Я видел много людей, использующих Redis в качестве кэша в последнее время, почему не Mongo? Насколько я мог сказать, Redis может установить дату истечения срока действия индекса, например memcache, но в противном случае есть причины не использовать Mongo для этого?

Я спрашиваю, как я делаю большое объединение в MySQL, а затем меняю данные после его выбора. Я уже использую memcache на других частях сайта, но сохранение этого в Mongo позволило бы мне выполнять геопространственные поиски по кэшированным данным.

Ответы

Ответ 1

Многие люди используют MongoDB для кэша низкого уровня и отлично работают.

Поскольку он предлагает больше функциональности, чем простое хранилище ключей, с помощью ad-hoc-запросов, он не так чист от уровня кэширования, как memcache или redis (он может быть медленнее вставлять и извлекать данные).

Достижение чрезвычайно высокой производительности (в конце концов рабочий набор в ОЗУ), но модель данных более тяжелая.

Однако, с другой стороны, MongoDB предлагает уровень защиты, который имеет гораздо большее значение (для большинства разработчиков) для типа данных, который наиболее вероятно необходим позднее, в отличие от Redis.

Ответ 2

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

Ответ 3

Когда мы говорим о кешировании, скорость приходит на ум. Цель здесь - установить и получить что-то как можно быстрее. В этом смысле redis быстрее, чем mongodb. Однако, если вы обнаружите, что mongodb подходит для выполнения геопространственных поисков по кэшированным данным, это нормально использовать. Конечно, вы можете потратить некоторое время и реализовать то же самое в redis, а затем проверить, что вы получаете.