xticks barplot python connection redis

barplot - Gestionando la conexión a redis desde Python



pandas plot (2)

Estoy usando redis-py en mi aplicación python para almacenar variables simples o listas de variables en una base de datos de Redis, así que pensé que sería mejor crear una conexión con el servidor de redis cada vez que necesito guardar o recuperar una variable. no se realiza con mucha frecuencia y no desea tener una conexión permanente que pueda agotarse.

Al leer algunos tutoriales básicos, creé las conexiones utilizando la clase Redis, pero no he encontrado una forma de cerrar la conexión, ya que es la primera vez que uso Redis. No estoy seguro si estoy usando el mejor enfoque para administrar las conexiones, por lo que me gustaría recibir algunos consejos para esto. Así es como set o get una variable ahora:

import redis def getVariable(variable_name): my_server = redis.Redis("10.0.0.1") response = my_server.get(variable_name) return response def setVariable(variable_name, variable_value): my_server = redis.Redis("10.0.0.1") my_server.set(variable_name, variable_value)

Básicamente, utilizo este código para almacenar la última conexión o para hacer un promedio de solicitudes por segundo a mi aplicación y cosas así.

Gracias por su consejo.


@ sg1990 ¿Qué sucede si tiene 10.000 usuarios que requieren redis al mismo tiempo? No pueden compartir una sola conexión y acabas de crearte un cuello de botella.

Con un grupo de conexiones, puede crear un número arbitrario de conexiones y simplemente usar get_connection() y release() , desde documentos redis-py .

Una conexión por usuario es un exceso excesivo, ya que cada conexión necesita mantener un socket abierto. De esta manera, disminuiría automáticamente un número de usuarios de websocket concurrentes, por ejemplo, que su máquina puede manejar a la mitad.


Python utiliza un mecanismo de contador de referencia para tratar con objetos, por lo que al final de los bloques, el objeto my_server se destruirá automáticamente y se cerrará la conexión. No es necesario cerrarlo explícitamente.

Ahora no es así como se supone que debes administrar las conexiones de Redis. La conexión / desconexión para cada operación es demasiado costosa, por lo que es mucho mejor mantener abierta la conexión. Con redis-py se puede hacer declarando un conjunto de conexiones:

import redis POOL = redis.ConnectionPool(host=''10.0.0.1'', port=6379, db=0) def getVariable(variable_name): my_server = redis.Redis(connection_pool=POOL) response = my_server.get(variable_name) return response def setVariable(variable_name, variable_value): my_server = redis.Redis(connection_pool=POOL) my_server.set(variable_name, variable_value)

Tenga en cuenta que la administración del grupo de conexiones es en su mayoría automática y se realiza dentro de redis-py.