Здравствуйте. Нужно написать telegram-бота, который последовательно задаёт пользователю вопросы, а потом записывает введённые данные в БД. Перед опросом пользователь должен будет выбрать язык. Я решил подключить для этого Redis.
То есть при каждом сообщении я буду считывать из Redis так называемый "уровень" (т.е на каком вопросе находится пользователь) и выбранный им язык. Все ответы тоже буду записывать в Redis, а потом уже заноситься в БД. Итак, вопрос:
Правильно ли использовать Redis для такого? Может, я выиграю в быстродействии, если просто буду хранить массив объектов (ну или JSON-файл)
Вы, по-сути, реализовываете хранение сессионных данных пользователя. Использовать для этого redis вполне обычная и распространённая практика.
P.S.: выигрывать что-то в быстродействии лучше стараться только после того, как оно было проиграно на практике, так называемая "преждевременная оптимизация" (решение несуществующих проблем) - очень распространённый психоз среди начинающих разработчиков.
mak_ufo: вот только критерии этой логики, архитектуры и инструментов всё равно получатся взятыми с потолка, пока нет _реальной_ проблемы. "Premature optimization is the root of all evil."
(Но и к этому предостережениб, конечно, тоже не стОит относиться слишком фанатично, просто предусматривайте то, с чем уже сталкивались ранее, не тратя нервы на страхи перед неизвестностью.)
Если список вопросов/ответов небольшой, скажем < 4кб, то я бы его целиком читал/писал в монгу. Если список действительно большой то использовать redis оправдано с целью уменьшения запросов к ДБ. Только лучше сначала писать в ДБ затем в redis, иначе( если база отвалится) можете задать пользователю следующий вопрос без сохранения предыдущего.