Всем привет, пишу подтверждение номера телефона средством смс кода, возник вопрос где лучше хранить код, нашел в интернете два варианта:
1. база данных (первый вариант, который приходит в голову)
2. и какой-то кэш, в котором есть поля: код и время отправления
также ко второму варианту был предложен вариант привязать ip и девайс, чтобы можно было одновременно войти с компа и, например, телефона
также ко второму варианту был предложен вариант привязать ip и девайс,
А потом у тебя возникает несколько девайсов разных пользователей под одним ip из-за того что все в одной сети)
Или один и тот же девайс от одного пользователя под несколькими ip из-за переключения между вышками)
Лучше привязываться сгенерировать какой-нибудь "id сессии" и к ней уже привязывать коды, если это действительно необходимо.
Тут нет "более правильного" варианта.
Программная инженерия - это всегда про компромисс.
Я бы выбрал вариант с уже имеющейся базой данных, тк это:
1. Уже проверенное решение
2. Это решение очень простое и понятное
3. Оно не подразумевает усложнение инфраструктуры
4. Оно точно устроит тебя по производительности.
OCCASS OCCASSOVICH, ну вот ты redis помянул, если у меня его нет, то мне бы пришлось сначала интегрировать с ним свой сервес, не факт же что это простой, или у меня нет бд, то я и не смогу в ней хранить. Сам определяйся где тебе проще всего сделать.
OCCASS OCCASSOVICH, еще раз, для одного человека удобно сделать в обычной бд, для другого в redis, это субъективное, поэтому и говорю, делай где именно тебе удобней
OCCASS OCCASSOVICH, если у тебя уже поднята какая-то БД, то храни в ней. Хз сколько нужно кодов отправлять и проверять, чтобы реально возникла проблема с этим.
OCCASS OCCASSOVICH, тогда просто на уровне кода сделай так, чтобы не сложно было пересесть на другую реализацию.
Повторюсь, что выделить табличку в базе данных - это 5 минут времени.
Поднимать какой-нибудь редис, придумывать хитрую структуру данных и индексы, чтобы всё мгновенно искалось - это долго и сложно.
Это всё имеет смысл только если ты какой-то банк, которому реально нужно рассылать каждую минуту тысячи смс для 3ds-кодов.
При этом в 90% случаев ты просто не заметишь разницы. Ну и зачем платить больше?