theblabs
@theblabs

Как организовать сессии пользователей с помощью Redis?

Вводные
- Под одним аккаунтов может сидеть только один пользователь
- У сессии есть срок жизни = 48ч
- Токены нужны для того, чтобы обрабатывать API запросы

Вариант: Помещаем в Redis токен и идентификатор пользователя (id), а также устанавливаем TTL, по истечению которого запись удаляется. При каждом запросе (GET/POST/PUT/DELETE) мы обновляем токен.

Вопросы
  1. На сколько применим выше вариант организации пользовательских сессий?
  2. Есть ли инструмент, который позволит искать запись в Redis по значению, а не ключу?
  3. Есть ли альтернативные решения при условии, что токены читать нужно через Redis? К примеру, последний токен хранить в PostgreSQL и при его обновлении там также обновлять
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 2
yellow79
@yellow79
Senior Software Engineer
1. Очень даже приемлемый вариант.
2. Такого инструмента нет. Выбираете все ключи по маске, далее сравниваете значения. То есть все ваши сессии должны иметь примерно такой вид sessions:session_id, делаете выборку ключей по маске sessions:* и ищете нужное значение перебором.

При каждом запросе (GET/POST/PUT/DELETE) мы обновляем токен.
обновлять надо TTL для записи
Ответ написан
opium
@opium
Просто люблю качественно работать
Если мало сессий то пойдёт и постгрес, просто постгрес уже на тысячу коннекторы ляжет на спину а редис далее не чихнет
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы