Завершение срока действия ключей в Redis

Redis – это открытое in-memory хранилище типа «ключ-значение». По умолчанию ключи Redis постоянные, то есть сервер Redis будет продолжать хранить их до тех пор, пока они не будут удалены вручную. Однако в отдельных ситуациях вы устанавливаете ключ, но знаете, что захотите в дальнейшем удалить его; другими словами, вам нужен непостоянный ключ. В этом мануале мы расскажем, как установить срок действия ключей, проверить, сколько времени остается до истечения этого срока, и отменить все эти настройки.

Как работать с этим мануалом

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

Команды, использованные в этом мануале, были протестированы на сервере Ubuntu 18.04 и экземпляре Redis версии 4.0.9. Чтобы настроить аналогичную среду, вы можете следовать разделу 1 руководства Установка и защита Redis в Ubuntu 18.04. Мы покажем, как эти ведут себя команды в redis-cli, интерфейсе командной строки Redis. Обратите внимание, что если вы используете другой интерфейс Redis — например, Redli – то вывод некоторых команд будет отличаться.

1: Настройка сроков действия ключа

Настроить время действия существующего ключа можно с помощью команды expire, которая принимает в качестве аргументов имя ключа и количество секунд до истечения срока. Чтобы посмотреть, как это работает, выполните следующие две команды. Первая команда создает строковый ключ key_melon со значением «cantaloupe», а вторая устанавливает срок его действия в 450 секунд:

set key_melon "cantaloupe"
expire key_melon 450

Если временной интервал был установлен успешно, команда expire возвратит (integer) 1. Если установить время не удалась, команда вернет (integer) 0.

Кроме того, вы можете завершить срок действия ключа в определенный момент времени – это делается с помощью команды expireat. Вместо количества секунд до истечения срока действия ключа в качестве аргумента она принимает временную метку Unix. Метка времени Unix – это количество секунд с начала эпохи Unix, или 00:00:00 UTC на 1 января 1970 года. В сети существует несколько инструментов, которые можно использовать для определения временной метки времени Unix, например, EpochConverter и UnixTimestamp.com.

К примеру, чтобы срок действия ключа key_melon истек в 8:30 вечера по Гринвичу 1 мая 2025 года (этот момент времени выражается временной меткой Unix 1746131400), можно использовать следующую команду:

expireat key_melon 1746131400

Обратите внимание, если временная метка, которую вы передали expireat, относится к прошедшему времени, команда немедленно удалит ключ.

2: Проверка срока действия ключа

Всегда, когда вы устанавливаете срок действия ключа, вы можете проверить, сколько осталось до истечения срока его действия (в секундах). Это можно сделать с помощью команды ttl, что расшифровывается как «time tlive»:

ttl key_melon
(integer) 433

Для получения более детальной информации вы можете запустить команду pttl, которая покажет количество времени до истечения срока действия ключа в миллисекундах:

pttl key_melon
(integer) 431506

Команды ttl и pttl вернут вывод (integer) -1, если ключ не был настроен как непостоянный, и (integer) -2, если ключ не существует.

3: Сброс настроек непостоянных ключей

Если вы настроили ключ как непостоянный (то есть у него есть срок действия), любая команда, которая перезаписывает содержимое ключа, например set или getset, удалит эти настройки. Чтобы вручную сбросить время действия ключа, используйте команду persist:

persist key_melon

Команда persist вернет вывод (integer) 1, если операция прошла успешно – это значит, что срок действия ключа сброшен и ключ стал постоянным.

Заключение

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

Читайте также: Запуск транзакций в Redis

Tags: , , ,