Основные данныеВеб и мобильные приложения

Управление сеансами

Храните сеансы с автоматическим истечением и находите или отзывайте их по пользователю, роли или устройству, не создавая индекс.

поиск для нахождения сеансов пользователя
1
вторичных индексов
0
истечение, теги включены
Авто
Шаг 1 из 5
Входим на трёх устройствах

Каждое устройство получает собственный сеанс со сроком 30 минут.

Пример сеансаplaying
# Входим на трёх устройствах
hotkv> SET session:9f2c "{\"user\":42}" EX 1800
OK

Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.

Проблема

Сеансы небольшие, горячие и короткоживущие, что подходит хранилищу в памяти. Сложное начинается позже, когда поддержке нужно разлогинить пользователя везде или безопасности нужно завершить все сеансы роли или устройства. Простое хранилище «ключ - значение» умеет искать сеанс только по его идентификатору.

Как с этим справляется HotKV

HotKV хранит каждый сеанс как ключ со сроком жизни и позволяет пометить его тегами пользователя, роли или устройства. Теги - часть движка и исчезают вместе с ключом, поэтому вы можете перечислить или отозвать все подходящие сеансы одним запросом, а не поддерживать параллельный набор ключей.

Шаг за шагом

Что происходит, команда за командой

  1. 01

    Входим на трёх устройствах

    Каждое устройство получает собственный сеанс со сроком 30 минут.

    SET session:9f2c "{\"user\":42}" EX 1800
  2. 02

    Помечаем каждый сеанс

    Пользователь, роль и устройство добавляются сразу после создания сеанса.

    TAG.SET session:9f2c user:42 role:admin device:ios
  3. 03

    Остаёмся в системе, пока активны

    Каждый запрос продлевает срок, что даёт скользящий тайм-аут.

    EXPIRE session:9f2c 1800
  4. 04

    Находим все сеансы пользователя 42

    Сообщили об украденном ноутбуке. Один запрос возвращает все сеансы пользователя.

    TAG.MEMBERS user:42
  5. 05

    Выходим везде

    Удалите вернувшиеся ключи. Их теги исчезают вместе с ними, и все устройства разлогинены.

    DEL session:9f2c session:71aa session:0c8e
Где это уместно

Реальные сценарии

Банковские и финтех-приложения

Команды безопасности завершают все сеансы взломанного аккаунта или всех устройств с устаревшей версией приложения одним действием.

Продукты SaaS

Когда у администратора отзывают роль, все сеансы с тегом этой роли отзываются сразу.

Стриминговые сервисы

Подсчитывайте и ограничивайте одновременные сеансы на аккаунт по ответу TAG.MEMBERS для тега пользователя.

Встроено

Что вы получаете

Автоматическое истечение

Сеансы исчезают сами, когда истекает TTL, и теги исчезают вместе с ними.

EXEXPIRE

Поиск без индекса

Находите сеансы по любому тегу или сразу по нескольким тегам.

TAG.MEMBERSTAG.INTER

Быстрая проверка тегов

TAG.COUNT и TAG.EXISTS сообщают, какие теги несёт ключ.

TAG.COUNTTAG.EXISTS

Быстро при наплыве входов

Чтение и запись сеансов выполняются на параллельных потоках.

Частые вопросы

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

Используйте TAG.INTER с тегом пользователя и тегом устройства, затем удалите вернувшиеся ключи.

Что происходит с тегом, когда истекает его сеанс?

Теги ключа исчезают вместе с ключом, в том числе при истечении. Теги не входят в снимки, поэтому примените их заново, если сервер перезапускается из снимка.

Можно ли ограничить одновременные сеансы на аккаунт?

Да. TAG.MEMBERS для тега пользователя перечисляет сеансы, так что вы можете посчитать их и отказать во входе или завершить самый старый.

Связанные сценарии

Попробуйте на своей нагрузке

HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.