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

Метод delete_many

Метод delete_many применяется к объекту кэша и удаляет несколько ключей за один вызов. В качестве аргумента метод принимает список или кортеж с именами ключей, которые необходимо удалить. Метод возвращает количество успешно удаленных ключей. В зависимости от используемого бэкенда кэширования, метод может работать по-разному, но в большинстве случаев удаление нескольких ключей выполняется более эффективно, чем поочередное удаление.

Синтаксис

cache.delete_many(keys)

Где keys - это список или кортеж строковых ключей, которые нужно удалить из кэша.

Пример

Давайте удалим несколько ключей из кэша:

from django.core.cache import cache # Set some cache values cache.set('user_1_name', 'John') cache.set('user_1_age', 25) cache.set('user_2_name', 'Jane') cache.set('user_2_age', 30) # Delete multiple keys keys_to_delete = ['user_1_name', 'user_1_age'] deleted_count = cache.delete_many(keys_to_delete) print(deleted_count)

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

2

Метод вернул количество удаленных ключей. При этом ключи 'user_2_name' и 'user_2_age' остались в кэше, так как не были указаны для удаления.

Пример

Давайте попробуем удалить ключи, которых нет в кэше:

from django.core.cache import cache # Delete keys that don't exist keys_to_delete = ['non_existent_key_1', 'non_existent_key_2'] deleted_count = cache.delete_many(keys_to_delete) print(deleted_count)

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

0

Метод вернул 0, так как указанные ключи не были найдены в кэше. Это поведение отличается от метода delete, который в такой ситуации просто ничего не делает без возврата значения.

Пример

Рассмотрим практический пример использования метода для очистки кэша после обновления данных:

from django.core.cache import cache from myapp.models import Article # Update article article = Article.objects.get(id=1) article.title = 'New Title' article.save() # Delete all cache keys related to this article keys_to_delete = [ f'article_{article.id}_detail', f'article_{article.id}_comments', f'article_{article.id}_stats' ] deleted_count = cache.delete_many(keys_to_delete) print(deleted_count)

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

3

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

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

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