Мне нужно загрузить несколько полей информации, которые редко изменяются для проверки маршрутов, к которым пользователь может получить доступ.MongoDB vs Redis для пользовательских сессий?
В настоящее время я запрос MongoDB и хранить эти поля в Redis наряду с какой-либо конкретной информации о состоянии в одном хэш, который шпонкой на 'user:' + mongodb_user_objectid
, когда пользователь входит в систему.
Затем создать сеанс для HTTP куки и магазин этот ключ как строка в redis, а также ключ от 'sess:' + session_id
.
Было бы лучше не копировать по полям из mongodb и иметь дело с обновлением как redis, так и mongodb, когда одно из этих полей проверки может измениться?
Есть ли существенное различие в производительности от чтения и записи этой информации сессии непосредственно от/до mongodb без использования redis в качестве посредника?
Я полностью согласен повторно. измерения. Число рейнольдса часть угадывания - в то время как я менее интимный с MongoDB, два из классических вариантов использования Redis - это управление сеансом и ускорение/кеширование БД. В частности, поскольку MongoDB не является базой данных в памяти, он обычно дополняется Redis, где важна производительность (например, http://redislabs.com/blog/the-top-3-game-changing-redis-use-cases:)) –
Спасибо за ссылку. Это все очень верно, но, как видно из ссылки, redis действительно сияет, когда речь заходит о * изменении * сессии * часто *, сохраняя количество попаданий, количество запросов и т. Д. В актуальном состоянии. Это тот момент, когда имеет смысл разделить более быстрые и громоздкие операции и обеспечить повторную запись только в ОЗУ. Тем не менее, ОП не говорил, что он пишет очень часто, и даже тогда, это должно быть много трафика, чтобы стать важным отличием. – mnemosyn
Итак, поскольку mongodb загружает целые документы в память, будет ли это пустой тратой памяти, если мне нужно всего лишь использовать несколько полей из документа пользователя mongodb в сеансе? – paulkon