Зачем использовать 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, а затем проверить, что вы получаете.