@AlexMine
Учусь

Как хранить онлайн статус пользователя?

разрабатываю api, стоит задача, как-то хранить и отдавать последнее время онлайна пользователя. Сейчас это делается, следующим образом: есть таблица(users_onlines) с полями id(bigint), user_id(uuid), created_at(timestamp), при каждом обращении к апи делается insert в таблицу, когда нужно получить время, забирается последняя строчка из бд. При таком подходе пишется очень много строк, есть ли смысл сделать 1 строка -> 1 пользователь и при запросе к апи делать update времени? Может быть стоит выбрать redis для такой задачи?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
сделать 1 строка -> 1 пользователь и при запросе к апи делать update времени?

Так и делают в большинстве случаев.
Только не 1 строка -> 1 пользователь, 1 строка -> 1 сессия авторизации. Один пользователь может авторизоваться не только на одном устройстве (браузере, экземпляре программы, ОС), но и на еще одном, и даже на утюге. Нужно отслеживать, когда каждая сессия открыта, когда закрыта (по принудительному разлогированию), когда последний раз пользователь пинговал апи (время онлайн).
Этих сведений в большинстве систем достаточно.
То, что вы пишите каждый запрос в свои логи - эти логи есть в логах сервера. Если не стоит задачи их детального анализа в контексте пользователя, то нет нужды писать такие сведения в своих логах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы