Что такое TTL в Redis?
Подробный ответ
Что такое TTL
TTL — сокращение от Time To Live, то есть «время жизни». В Redis TTL задаёт срок, после которого ключ автоматически истекает и становится недоступным.
Установка TTL
SET session:abc123 "user:42" EX 3600
SETEX article:42 300 "cached data"
EXPIRE session:abc123 3600SET ... EX 3600создаёт ключ со сроком жизни 3600 секунд;SETEXсохраняет значение и срок жизни одной командой;EXPIREдобавляет или изменяет срок жизни существующего ключа.
Проверка оставшегося времени
TTL session:abc123
PTTL session:abc123TTL возвращает время в секундах, а PTTL — в миллисекундах. Значение -1 означает, что ключ существует, но у него нет срока жизни. Значение -2 означает, что ключ не существует.
Примеры использования
кэш страницы или ответа API на несколько минут;
сессия пользователя на несколько часов;
одноразовый код подтверждения на несколько минут;
счётчик запросов для ограничения частоты на одну минуту;
временная блокировка после множества неудачных попыток входа.
Важный нюанс
Истечение ключа не обязательно происходит в точную миллисекунду: Redis удаляет просроченные ключи при обращении к ним и периодически очищает часть истёкших ключей в фоне. Для прикладной логики важно учитывать это как автоматическое ограничение срока хранения, а не как точный планировщик событий.
Как ответить на собеседовании
TTL — это срок жизни ключа в Redis. После истечения этого срока Redis удаляет ключ. Я задаю TTL для кэша, сессий, токенов и временных счётчиков через SET ... EX, SETEX или EXPIRE, а оставшееся время проверяю командой TTL.
Оцени свой прогресс