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.