Django & Redis: Как правильно использовать пул соединений?

У меня есть сервер Redis, который я запрашиваю почти для каждого представления Django для получения некоторых кэшированных данных. Я прочитал несколько вопросов о stackoverflow и узнал, что создание нового Redis-соединения через r = redis.StrictRedis(host='localhost', port=6379, db=0) для каждого отдельного веб-запроса является плохим и что я должен использовать пул соединений.

Вот такой подход, который я придумал для объединения пулов в Django:

В settings.py чтобы я мог легко подтянуть его в любом представлении Django, поскольку это похоже на глобальную переменную:

# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)

В некоторых views.py:

from django.conf import settings  
REDIS_CONN_POOL_1 = settings.REDIS_POOL_1   
r = redis.Redis(connection_pool=REDIS_CONN_POOL_1)
r.get("foobar") # Whatever operation  

Итак, мой вопрос: правильно ли это сделать пул соединений в Django? Есть ли какие-то лучшие подходы, которые вы, ребята, используете для тех, кто испытал подобный сценарий? Вероятно, это лучше, чем мой старый подход открытия и закрытия нового соединения redis по каждому запросу.

EDIT: собрал мое понимание о том, почему неправильно открывать новое соединение по каждому запросу из этого qaru.site/info/164690/....

Ответы

Ответ 1

Лучшим подходом было бы настроить redis как ваш бэкэнд кеша Django с приложением Django redis. Он дает вам готовое решение для вашей проблемы, и вы можете использовать официальную библиотеку кеша Django для достижения redis, когда хотите получить или установить кешированную информацию. Вы также можете избежать проблем с совместимостью в своем приложении, если вы решите изменить кеш-память на что-то еще.

Здесь легко следовать учебнику:

Использование Redis в качестве хранилища сеансов Django и кэширования