Метод set_many

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

Синтаксис

pythoncache.set_many(dict, timeout=None, version=None)

Параметры

Метод принимает следующие параметры:

dict - обязательный параметр, словарь с ключами и значениями для установки в кэш.

timeout - необязательный параметр, время жизни ключей в секундах. Если не указан, используется значение по умолчанию из настроек кэша.

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

Пример

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

pythonfrom django.core.cache import cache

data = {
  'user_1_name': 'John',
  'user_1_age': 25,
  'user_1_city': 'New York',
}

cache.set_many(data)
res = cache.get_many(['user_1_name', 'user_1_age', 'user_1_city'])
print(res)

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

python{
  'user_1_name': 'John',
  'user_1_age': 25,
  'user_1_city': 'New York'
}

Пример

Давайте установим значения в кэш с указанием времени жизни в 60 секунд:

pythonfrom django.core.cache import cache

articles = {
  'article_1': 'Django basics',
  'article_2': 'Cache system',
  'article_3': 'ORM queries',
}

cache.set_many(articles, timeout=60)

res = cache.get_many(['article_1', 'article_2', 'article_3'])
print(res)

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

python{
  'article_1': 'Django basics',
  'article_2': 'Cache system',
  'article_3': 'ORM queries'
}

Пример

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

pythonfrom django.core.cache import cache

settings = {
  'debug_mode': True,
  'api_enabled': True,
  'maintenance_mode': False,
}

cache.set_many(settings, timeout=300, version=2)

res = cache.get_many(['debug_mode', 'api_enabled', 'maintenance_mode'], version=2)
print(res)

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

python{
  'debug_mode': True,
  'api_enabled': True,
  'maintenance_mode': False
}

Пример

Давайте сохраним в кэш данные из модели с помощью метода set_many:

pythonfrom django.core.cache import cache
from myapp.models import Article

articles = Article.objects.all()
cache_data = {}

for article in articles:
  cache_data[f'article_{article.id}'] = article.title

cache.set_many(cache_data, timeout=120)

res = cache.get_many(['article_1', 'article_2', 'article_3'])
print(res)

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

python{
  'article_1': 'First article',
  'article_2': 'Second article',
  'article_3': 'Third article'
}

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

  • метод get_many,
    который получает несколько ключей из кэша
  • метод set,
    который устанавливает один ключ в кэш
  • метод delete_many,
    который удаляет несколько ключей из кэша
  • метод get,
    который получает один ключ из кэша