Ich habe einen Redis-Server, den ich in fast jeder Django-Ansicht für das Abrufen einiger zwischengespeicherter Daten abfrage. Ich habe ein wenig über Stack-Overflow-Fragen gelesen und gelernt, dass eine neue Redis-Verbindung über r = redis.StrictRedis(host='localhost', port=6379, db=0)
für jede einzelne Web-Anfrage schlecht ist und dass ich Connection-Pooling verwenden sollte. HierDjango & Redis: Wie verwende ich Connection Pooling richtig?
ist der Ansatz, den ich kam mit Verbindungs-Pooling in Django:
In settings.py
so kann ich es einfach in jedem Django Blick nach oben ziehen, da dies wie eine globalen Variable ist:
# Redis Settings
import redis
REDIS_CONN_POOL_1 = redis.ConnectionPool(host='localhost', port=6379, db=0)
in einigen 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
Also, meine Frage ist: ist das der richtige Weg Connection Pooling in Django zu tun? Gibt es bessere Ansätze für diejenigen, die ein ähnliches Szenario wie dieses erlebt haben? Dies ist wahrscheinlich besser als meine alte Methode, bei jeder Anfrage eine neue Verbindung zu öffnen und zu schließen.
EDIT: Erfasste mein Verständnis darüber, warum es falsch ist, eine neue Verbindung auf jede Anfrage von diesem stackoverflow question zu öffnen.
Dies ist für eine DB wie eine gute Lösung zu sein scheint. Haben Sie eine Idee, wie Sie mehrere DBs angeben oder zwischen DBs wechseln, wenn Sie Operationen über 'from django.core.cache import cache' ausführen? Von dem, was ich beim Lesen von Django Redis Cache-Dokumenten gesammelt habe, können wir nur einen einzelnen DB angeben. – user1757703
Nun, die Anzahl der DBs ist in redis auf 12 begrenzt. Es wäre viel einfacher, Schlüsselpräfixe zu verwenden. Sie können sogar Ihre eigenen Hilfsmethoden schreiben, um sie zu erreichen, ohne viel zu tun. Warum brauchst du übrigens mehrere DBs? – martincpt
Ich brauche mehrere DBs, weil ich meine Daten basierend auf der Art der Daten in mehreren DBs organisiere. – user1757703