Метод set_many
Метод set_many применяется к объекту кэша Django и позволяет
установить сразу несколько ключей и соответствующих им значений
в кэш за один вызов. В качестве аргументов метод принимает
словарь, где ключи - это строки-идентификаторы, а значения -
данные для кэширования. Дополнительно можно указать время
жизни ключей и таймаут.
Синтаксис
cache.set_many(dict, timeout=None, version=None)
Параметры
Метод принимает следующие параметры:
dict - обязательный параметр, словарь с ключами и значениями
для установки в кэш.
timeout - необязательный параметр, время жизни ключей
в секундах. Если не указан, используется значение по умолчанию
из настроек кэша.
version - необязательный параметр, версия ключей кэша.
Позволяет управлять версионированием данных в кэше.
Пример
Давайте установим несколько значений в кэш с помощью метода
set_many:
from 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)
Результат выполнения кода:
{
'user_1_name': 'John',
'user_1_age': 25,
'user_1_city': 'New York'
}
Пример
Давайте установим значения в кэш с указанием времени жизни
в 60 секунд:
from 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)
Результат выполнения кода:
{
'article_1': 'Django basics',
'article_2': 'Cache system',
'article_3': 'ORM queries'
}
Пример
Давайте используем метод set_many с указанием версии
кэша:
from 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)
Результат выполнения кода:
{
'debug_mode': True,
'api_enabled': True,
'maintenance_mode': False
}
Пример
Давайте сохраним в кэш данные из модели с помощью метода
set_many:
from 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)
Результат выполнения кода:
{
'article_1': 'First article',
'article_2': 'Second article',
'article_3': 'Third article'
}
Смотрите также
-
метод
get_many,
который получает несколько ключей из кэша -
метод
set,
который устанавливает один ключ в кэш -
метод
delete_many,
который удаляет несколько ключей из кэша -
метод
get,
который получает один ключ из кэша