Django Redis

django-redis предоставляет Redis backend для системы кэширования Django.

Установка

1# Установка пакета
2pip install django-redis
1# Или через Poetry
2poetry add django-redis

Настройка

 1# settings.py
 2CACHES = {
 3    "default": {
 4        "BACKEND": "django_redis.cache.RedisCache",
 5        "LOCATION": "redis://127.0.0.1:6379/1",
 6        "OPTIONS": {
 7            "CLIENT_CLASS": "django_redis.client.DefaultClient",
 8        }
 9    }
10}

Использование кэша

 1from django.core.cache import cache
 2
 3# Сохранение в кэш
 4cache.set('my_key', 'my_value', 300)  # 5 минут
 5
 6# Получение из кэша
 7value = cache.get('my_key')
 8
 9# Кэширование результата функции
10@cache_page(60 * 15)  # 15 минут
11def expensive_view(request):
12    # Дорогие вычисления
13    return render(request, 'template.html')

Кэширование QuerySets

 1from django.core.cache import cache
 2
 3def get_popular_books():
 4    cache_key = 'popular_books'
 5    books = cache.get(cache_key)
 6    
 7    if books is None:
 8        books = Book.objects.filter(
 9            rating__gte=4.5
10        ).select_related('author')[:10]
11        cache.set(cache_key, books, 3600)  # 1 час
12    
13    return books

Настройка сессий

1# settings.py
2SESSION_ENGINE = "django.contrib.sessions.backends.cache"
3SESSION_CACHE_ALIAS = "default"
4
5# Кэширование сессий
6SESSION_SAVE_EVERY_REQUEST = True
7SESSION_COOKIE_AGE = 1209600  # 2 недели

FAQ

Q: Как очистить весь кэш?
A: Используй cache.clear() или команду manage.py.

Q: Можно ли использовать Redis для сессий?
A: Да, настрой SESSION_ENGINE на cache backend.