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

Метод incr

Метод incr применяется к объекту кэша и атомарно увеличивает числовое значение по указанному ключу на заданную величину. Метод возвращает новое значение после инкрементации. Если ключ не существует, возникает исключение ValueError. Метод полезен для ведения счётчиков, подсчёта просмотров и других операций, где требуется атомарное изменение значений.

Синтаксис

from django.core.cache import cache new_value = cache.incr(key, delta=1)

Параметры

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

  • key - строка, идентифицирующая ключ в кэше;
  • delta - целое число, на которое нужно увеличить значение (по умолчанию равно 1).

Пример . С инкрементацией на 1

Давайте увеличим значение счётчика просмотров на единицу:

from django.core.cache import cache # Устанавливаем начальное значение cache.set('page_views', 100) # Увеличиваем значение на 1 new_value = cache.incr('page_views') print(new_value)

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

"101"

Пример . С инкрементацией на заданное число

Увеличим значение счётчика на 5 за один вызов:

from django.core.cache import cache # Устанавливаем начальное значение cache.set('user_score', 50) # Увеличиваем значение на 5 new_value = cache.incr('user_score', delta=5) print(new_value)

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

"55"

Пример . Обработка ошибки при отсутствии ключа

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

from django.core.cache import cache try: cache.incr('non_existent_key') except ValueError as e: print(e)

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

"Key 'non_existent_key' not found"

Пример . Использование в веб-приложении

Реализуем подсчёт просмотров статьи с использованием кэша:

from django.core.cache import cache from django.http import HttpResponse from myapp.models import Article def article_detail(request, article_id): article = Article.objects.get(id=article_id) cache_key = f'article_views_{article_id}' # Увеличиваем счётчик просмотров if cache.has_key(cache_key): cache.incr(cache_key) else: cache.set(cache_key, article.views_count) views = cache.get(cache_key) return HttpResponse(f'Views: {views}')

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

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