Метод incr

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

Синтаксис

pythonfrom django.core.cache import cache

new_value = cache.incr(key, delta=1)

Параметры

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

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

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

pythonfrom django.core.cache import cache

# Устанавливаем начальное значение
cache.set('page_views', 100)

# Увеличиваем значение на 1
new_value = cache.incr('page_views')
print(new_value)

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

python"101"

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

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

pythonfrom django.core.cache import cache

# Устанавливаем начальное значение
cache.set('user_score', 50)

# Увеличиваем значение на 5
new_value = cache.incr('user_score', delta=5)
print(new_value)

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

python"55"

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

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

pythonfrom django.core.cache import cache

try:
  cache.incr('non_existent_key')
except ValueError as e:
  print(e)

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

python"Key 'non_existent_key' not found"

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

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

pythonfrom 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,
    который проверяет существование ключа в кэше