Метод delete_many

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

Синтаксис

pythoncache.delete_many(keys)

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

Пример

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

pythonfrom 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)

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

python2

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

Пример

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

pythonfrom 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)

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

python0

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

Пример

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

pythonfrom 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)

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

python3

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

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

  • метод delete,
    который удаляет один ключ из кэша
  • метод get_many,
    который получает несколько ключей из кэша за один вызов
  • метод set_many,
    который устанавливает несколько ключей в кэш за один вызов
  • метод clear,
    который очищает весь кэш