Редис GETEX

Redis Getex



Redis — это хранилище данных «ключ-значение», используемое в качестве кэша в памяти, базы данных, временных рядов, потокового механизма, брокера сообщений и т. д. эффективный. Кроме того, скорость запросов очень высока с низкой временной сложностью, такой как O (1) и O (log (N)). Ключи Redis могут содержать различные структуры данных, такие как строки, наборы, хэши, отсортированные наборы и списки.

Обычно команды GET и SET используются для хранения и извлечения значений строкового типа, хранящихся в данном ключе Redis. Эти две команды работают с постоянной временной сложностью.







Кроме того, доступна команда GETEX для чтения строковых значений, хранящихся в заданном ключе. Но эта команда также связана с операцией параллельной записи. В этом руководстве основное внимание будет уделено синтаксису команды GETEX, ее параметрам и вариантам использования.



TTL ключа Redis

Значение времени жизни (TTL) — это время истечения срока действия данного фрагмента данных. Обычно TTL может быть связан со строками базы данных. Тайм-аут также можно установить с помощью ключей Redis. Таким образом, клиент Redis может проверить оставшиеся секунды, в течение которых данный ключ будет доступен в хранилище данных. Redis предлагает команду TTL для проверки времени жизни значения данного ключа. Если тайм-аут не связан с указанным ключом, команда TTL возвращает -1. Мы будем использовать команду TTL в следующих разделах, чтобы проверить оставшееся время данного ключа.



Команда GETEX

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





GETEX-ключ [ EX timeout_in_seconds | Время ожидания PX_в_миллисекундах | EXAT timeout_in_unix-time-seconds | PXAT timeout_in_unix-время-миллисекунды | СОПРОТИВЛЯТЬСЯ ]

ключ: Это ключ, указывающий на строковое значение.

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



БЫВШИЙ: Это установит время истечения срока действия в секундах для данного ключа.

ПК: Значение тайм-аута ключа будет установлено в миллисекундах.

Кроме того, мы можем указать значение метки времени UNIX в секундах или миллисекундах, используя следующие параметры команды. EXAT а также ПХАТ :

EXAT: Время истечения будет установлено в формате временной метки UNIX, а временная метка будет в секундах.

ПХАТ: Время ожидания для данного ключа Redis будет установлено как временная метка UNIX в миллисекундах.

СОПРОТИВЛЯТЬСЯ: Указав это, вы можете удалить значение времени жизни, связанное с указанным ключом.

Команда GETEX возвращает значение указанного ключа. Эта команда работает только со значениями строкового типа, но не с хэшами, списками, отсортированными наборами и т. д. Если вы укажете ключ, связанный с нестроковым значением, команда вернет ошибку. Кроме того, если срок действия ключа уже истек или его не существует, команда вернет ноль.

В следующем разделе мы рассмотрим практическое использование команды GETEX.

Вариант использования — временная ссылка для сброса или генерация PIN-кода для восстановления пароля/OTP

Хостинговая компания предоставляет зарегистрированным пользователям функцию восстановления пароля. В качестве меры безопасности они отправляют пользователю новую URL-ссылку, срок действия которой истекает в течение 5 минут. Компания уже давно использует хранилище данных Redis и использует команду GETEX для установки значения времени жизни для данного пользователя.

Предположим, что пользователь с user_id 1000 запрашивает восстановление пароля. Таким образом, URL-адрес восстановления может храниться в ключе URL-адрес восстановления: идентификатор пользователя: 1000 . Мы можем использовать команду SET для сохранения URL-адреса восстановления следующим образом:

установлен URL-адрес восстановления: идентификатор пользователя: 1000 'https://abc.com/recovery/userid=1000,key=sdfiuoe3290e9rjs'

Давайте проверим, правильно ли хранится строка URL в ключе URL-адрес восстановления: идентификатор пользователя: 1000. Мы можем использовать команду GETEX следующим образом:

getex RecoveryURL:Идентификатор пользователя: 1000

Результат предыдущей команды показан ниже:

Если мы использовали команду GET вместо команды GETEX, вывод будет таким же.

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

TTL RecoveryURL:Идентификатор пользователя: 1000

Как и ожидалось, команда TTL вернула -1, что означает, что с указанным ключом не связано время истечения срока действия.

В этом примере хостинговая компания должна установить 5-минутный тайм-аут для URL-адреса восстановления. Итак, мы будем использовать БЫВШИЙ командный вариант. Поскольку 5 минут — это 300 секунд, мы можем построить команду GETEX следующим образом:

getex RecoveryURL:Идентификатор пользователя: 1000 БЫВШИЙ 500

Давайте запустим команду TTL несколько раз, чтобы проверить оставшееся время, в течение которого ключ будет существовать в хранилище данных.

Как и ожидалось, время сокращается, и, в конце концов, URL-адрес восстановления: идентификатор пользователя: 1000 ключ будет удален. Вот результат через 5 минут:

Команда вернула -2, что означает, что срок действия ключа истек и он удален из хранилища данных.

Иногда может потребоваться удалить значение времени ожидания, связанное с данным ключом. Таким образом, параметр команды PERSIST можно использовать для удаления значения TTL, связанного с указанным ключом.

Давайте создадим еще один образец ключа и присвоим ему строковое значение. В этом случае мы укажем значение TTL в миллисекундах, передав ПК вариант.

установлен KeytoTestPersist 'Срок действия истекает в течение 60 секунд' ПК 50000

Далее мы будем проверять оставшееся время следующим образом:

Как и ожидалось, TTL уменьшается. Давайте вызовем команду GETEX с параметром PERSIST следующим образом:

getex KeytoTestPersist сохраняется

В идеале это удалит TTL, связанный с этим ключом. Давайте проверим TTL для ключа KeytoTestPersist.

Команда TTL вернула -1, что означает, что TTL не связан с ключом. KeytoTestPersist.

Точно так же ГЕТЭКС Команду можно использовать для установки времени истечения срока действия ключей в отметке времени UNIX.

Вывод

Таким образом, команду Redis GETEX можно использовать для извлечения строковых значений, хранящихся в заданном ключе, как это делает команда GET. Единственная разница с командой GETEX заключается в том, что она поддерживает установку и удаление сроков действия для данного ключа. Он поддерживает несколько необязательных аргументов для указания времени истечения срока действия в секундах, миллисекундах и UNIX-timestamp в секундах или миллисекундах. Как уже говорилось, команда предоставляет параметр PERSIST для удаления связанного TTL для данного ключа. В целом, команда GETEX работает с постоянной временной сложностью.