РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
670 of 818 menu

Метод add

Метод add применяется к объекту кэша и пытается сохранить значение по указанному ключу, но только если этот ключ отсутствует в кэше. Если ключ уже существует, операция не выполняется и метод возвращает False. В случае успешного добавления нового ключа возвращается True. Этот метод полезен для реализации блокировок или гарантии того, что значение будет установлено только один раз.

Синтаксис

cache.add(key, value, timeout=None, version=None)

Параметры метода:

  • ⁅b⁆key⁅/b⁆ - строка, идентифицирующая значение в кэше;
  • ⁅b⁆value⁅/b⁆ - данные для сохранения;
  • ⁅b⁆timeout⁅/b⁆ - время жизни ключа в секундах (по умолчанию используется тайм-аут из настроек кэша);
  • ⁅b⁆version⁅/b⁆ - версия ключа, позволяющая управлять разными версиями кэша.

Пример

Попробуем добавить значение по ключу 'user_count', которого ещё нет в кэше:

from django.core.cache import cache res = cache.add('user_count', 150, timeout=60) print(res)

Результат выполнения кода:

True

Так как ключ отсутствовал, значение было успешно добавлено, и метод вернул True.

Пример

Теперь попробуем повторно добавить значение по тому же ключу 'user_count', но с другим значением:

from django.core.cache import cache res = cache.add('user_count', 200, timeout=60) print(res)

Результат выполнения кода:

False

Поскольку ключ уже существует, операция добавления не выполняется, и метод возвращает False. Значение в кэше остаётся прежним (150).

Пример

Метод add часто используется для реализации атомарной блокировки. Например, чтобы гарантировать, что фоновый процесс запустится только один раз:

from django.core.cache import cache lock_key = 'processing_lock' acquired = cache.add(lock_key, 'locked', timeout=30) if acquired: print("Процесс запущен, блокировка установлена") else: print("Процесс уже запущен, блокировка активна")

Результат выполнения кода при первом запуске:

"Процесс запущен, блокировка установлена"

При повторном вызове в течение 30 секунд результат будет другим:

"Процесс уже запущен, блокировка активна"

Смотрите также

  • метод set,
    который устанавливает значение в кэш, перезаписывая существующий ключ
  • метод get,
    который получает значение из кэша по ключу
  • метод get_or_set,
    который возвращает значение из кэша или устанавливает его, если ключ отсутствует
  • метод delete,
    который удаляет значение из кэша по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить