Как настроить кэш Redis для управления сеансом с помощью UUID - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь настроить Redis как слой кэша в приложении Java.В частности, предполагаемое использование Redis будет состоять в поддержании состояния сеанса.Каждый пользователь в приложении будет представлен:

  • UUID, соответствующим идентификатору сеанса
  • значение userId
  • время последнего доступа
  • и, возможно, несколько других небольших полей

Я не совсем понимаю, как использовать хэш Redis.Интерфейс для Jedis:

Jedis#hset(byte[] key, byte[] field, byte[] value)

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

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

  • Эффективно хранить UUID каждого пользователя в хэше
  • Также воспользоваться возможностью Redis для истечения срока действия

Ко второму пункту выше,если бы я хотел, чтобы срок действия записи истек, это должно было быть сделано на уровне ключа, а не на уровне поля.Но это будет означать, что каждый UUID должен быть отдельным ключом в хэше, и неясно, будет ли это хорошим дизайном Redis.

1 Ответ

0 голосов
/ 21 февраля 2019

Использование хэшей Redis для состояния сеанса очень распространено.Стандартный подход заключается в использовании идентификатора сеанса в качестве ключа и использовании полей хеша для оставшейся части состояния сеанса.Этот дизайн имеет следующие желательные характеристики:

  • Вы можете получить состояние сеанса за время O (1).
  • Вы можете установить время истечения сеанса.
  • Вы можете хранить произвольное количество информации в сеансе.

Я считаю, что это соответствует вашим требованиям.

Вы используете фразы "У хэша Redis есть ключ" и "введите хэш "заставьте меня думать, что вы неправильно понимаете, как работают хэши.Ключ - это имя хеша, если хотите, а не его член.Подпись HSET указывает, какой хеш вы хотите изменить (ключ), и какое поле и значение в нем установить.

Вот пример (с использованием команд Redis) того, как может выглядеть создание сеанса:

HMSET session:123 userId 5 last_login 2019-02-13 ...
EXPIRE session:123 2592000

Затем вы можете получить данные сеанса с помощью:

HGET session:123 last_login

или установить их с помощью:

HSET session:123 last_login 2019-02-18
...