Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Wie verwende ich Verbindungspools in Redis richtig?

Redis-py stellt Ihnen einen Verbindungspool zur Verfügung, aus dem Sie eine Verbindung abrufen können. Verbindungspools erstellen eine Reihe von Verbindungen, die Sie nach Bedarf verwenden können (und wenn Sie fertig sind, wird die Verbindung zur weiteren Wiederverwendung an den Verbindungspool zurückgegeben). Wenn Sie versuchen, Verbindungen im Handumdrehen zu erstellen, ohne sie zu verwerfen (d. h. einen Pool nicht oder nicht richtig zu verwenden), bleiben Ihnen viel zu viele Verbindungen, die Sie neu erstellen müssen (bis Sie das Verbindungslimit erreichen).

Sie können den Verbindungspool in der Init-Methode einrichten und den Pool global machen (Sie können sich andere Optionen ansehen, wenn Sie mit global nicht zufrieden sind).

redis_pool = None

def init():
    global redis_pool
    print("PID %d: initializing redis pool..." % os.getpid())
    redis_pool = redis.ConnectionPool(host='10.0.0.1', port=6379, db=0)

Sie können die Verbindung dann wie folgt aus einem Pool abrufen:

redis_conn = redis.Redis(connection_pool=redis_pool)

Außerdem gehe ich davon aus, dass Sie Hiredis zusammen mit Redis-py verwenden, da dies in bestimmten Fällen die Leistung verbessern sollte. Haben Sie auch die Anzahl der offenen Verbindungen zum Redis-Server mit Ihrem bestehenden Setup überprüft, da sie höchstwahrscheinlich ziemlich hoch ist? Sie können den INFO-Befehl verwenden, um diese Informationen zu erhalten:

redis-cli info

Suchen Sie nach den Clients Abschnitt, in dem Sie die Datei "connected_clients" sehen "-Feld, das Ihnen sagt, wie viele Verbindungen Sie zu diesem Zeitpunkt zum Redis-Server geöffnet haben.