2015-02-04 4 views
2

У меня есть проект django, который использует redis (только один db в redis).Правильный способ управления соединениями redis в django

В настоящее время я делаю это:

В моем файле settings.py, у меня есть:

from redis import Redis 
REDIS_CONNECTION = Redis() 

В любое время я хочу назвать эту связь (на мой многих views.py файла в различных приложениях в проект) Я делаю это так:

from django.conf import settings 
settings.REDIS_CONNECTION.lpush("testlist", "hello") 

Есть ли проблема с этим подходом? Я не хочу создавать новые соединения для redis, если это не обязательно.

ответ

4

Из официальной документации пакета:

За кулисами, Redis-ру использует пул соединений для управления подключениями к серверу Redis. По умолчанию каждый созданный вами экземпляр Redis будет создавать собственный пул соединений. Вы можете переопределить это поведение и использовать существующий пул соединений, передав уже созданный экземпляр пула подключений аргументу connection_pool класса Redis. Вы можете сделать это для того, чтобы внедрить обработку на стороне клиента или получить более точное управление зерном, как управлять соединениями.

(см https://pypi.python.org/pypi/redis/)

Если вы хотите использовать централизованный пул, экземпляр одного в централизованном месте и каждый раз, когда вы создаете новый экземпляр передать его, что новый экземпляр:

pool = ConnectionPool(host='localhost', port=6379, db=0) 
r = Redis(connection_pool=pool) 

По моему скромному мнению (не эксперту) я бы продолжал использовать метод по умолчанию, с которым вы работали, и отказываться от этого подхода только, когда вы сталкиваетесь с проблемами производительности.

Желательная оптимизация может быть хуже, чем отсутствие оптимизации ИМО.

+0

Могу ли я вздохнуть за правильный ответ @Trewq? :) – bitoiu

+0

upvote предоставлен. – noahandthewhale

Смежные вопросы