Метод touch
Метод touch применяется к объекту кэша Django и обновляет время истечения (TTL) для указанного ключа. Если ключ существует, его срок жизни продлевается на переданное количество секунд. Если ключ не существует, метод возвращает False. Это полезно для продления жизни часто используемых данных без необходимости повторной генерации.
Синтаксис
cache.touch(key, timeout=None)
Параметры метода:
- key: строковый идентификатор ключа в кэше
- timeout: время жизни в секундах (по умолчанию используется значение из настроек CACHES)
Метод возвращает True, если ключ был успешно обновлен, и False, если ключ не существует.
Пример
Давайте установим значение в кэш и затем обновим его время жизни:
from django.core.cache import cache
# Устанавливаем значение с таймаутом 60 секунд
cache.set('user_data', {'name': 'John', 'age': 30}, timeout=60)
# Обновляем время жизни ключа на 120 секунд
result = cache.touch('user_data', timeout=120)
print(result)
# Проверяем, что ключ еще существует
data = cache.get('user_data')
print(data)
Результат выполнения кода:
"True"
"{'name': 'John', 'age': 30}"
Пример
Попробуем обновить время жизни несуществующего ключа:
from django.core.cache import cache
# Пытаемся обновить несуществующий ключ
result = cache.touch('non_existent_key', timeout=60)
print(result)
# Проверяем, что ключ не появился
data = cache.get('non_existent_key')
print(data)
Результат выполнения кода:
"False"
"None"
Пример
Использование метода с таймаутом по умолчанию из настроек:
from django.core.cache import cache
# Устанавливаем значение
cache.set('article', 'Django caching tutorial', timeout=30)
# Обновляем время жизни с таймаутом по умолчанию
result = cache.touch('article')
print(result)
# Получаем оставшееся время жизни (если поддерживается бэкендом)
from django.core.cache.backends.base import DEFAULT_TIMEOUT
print("Timeout updated to default")
Результат выполнения кода:
"True"
"Timeout updated to default"