La gestion de la connexion à redis à partir de Python
Je suis en utilisant redis-py
dans mon application en python pour stocker des variables de type simple ou de listes de variables dans un Redis, j'ai donc pensé qu'il serait préférable de créer une connexion vers le serveur redis à chaque fois que j'ai besoin d'enregistrer ou récupérer une variable comme cela n'est pas fait très souvent et ne veulent pas avoir une connexion permanente qui pourrait délai d'attente.
Lu quelques-uns des tutoriels, j'ai créé les connexions utilisant le Redis classe, mais n'ont pas trouvé un moyen de fermer la connexion, comme c'est la première fois que je suis en utilisant le Redis. Je ne suis pas sûr si je suis en utilisant la meilleure approche pour gérer les connexions donc je voudrais quelques conseils pour cela.
C'est ainsi que je suis set
ting ou get
ting une variable est maintenant:
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)
En gros, j'ai utiliser ce code pour enregistrer la dernière heure de connexion, ou pour obtenir un moyen de requêtes par seconde fait pour mon application et des trucs comme ça.
Merci pour vos conseils.
Vous devez vous connecter pour publier un commentaire.
Python utilise un compteur de références mécanisme pour traiter les objets, donc, à la fin des blocs, la mon_serveur objet sera automatiquement détruit et la fermeture de la connexion. Vous n'avez pas besoin de fermer explicitement.
Maintenant, ce n'est pas la façon dont vous êtes censé gérer Redis connexions. La connexion/déconnexion de chaque opération est trop cher, donc c'est beaucoup mieux pour maintenir la connexion ouverte. Avec redis-py, il peut être fait en déclarant d'un pool de connexions:
Veuillez noter que le pool de connexion de gestion est généralement automatique et réalisé au sein de redis-py.
@sg1990 que faire si vous avez 10.000 utilisateurs nécessitant redis en même temps? Ils ne peuvent pas partager une seule connexion et que vous en avez vous-même créé un goulot d'étranglement.
Avec un pool de connexions, vous pouvez créer un nombre arbitraire de connexions et de simplement utiliser
get_connection()
etrelease()
, de redis-py docs.Une connexion par utilisateur est un énorme exagéré, puisque chaque connexion doit maintenir l'ouverture de socket. De cette façon, vous seriez automatiquement diminuer un nombre, par exemple simultanées websocket utilisateurs que votre machine peut traiter par la moitié.
redis.Redis
plusieurs reprises, il va créer plusieurs pools de connexions. Si vous fournissezconnection_pool
il utilise alors que, si vous avez une connexion unique.