Basta usare redis.Redis
. Utilizza un pool di connessioni sotto il cofano, quindi non devi preoccuparti di gestire a quel livello.
Se è assolutamente necessario utilizzare una connessione di basso livello, è necessario eseguire la gestione della risposta che viene normalmente eseguita per lo redis.Redis
.
Ecco un esempio di esecuzione di un singolo comando utilizzando la connessione a basso livello:
def execute_low_level(command, *args, **kwargs):
connection = redis.Connection(**kwargs)
try:
connection.connect()
connection.send_command(command, *args)
response = connection.read_response()
if command in redis.Redis.RESPONSE_CALLBACKS:
return redis.Redis.RESPONSE_CALLBACKS[command](response)
return response
finally:
del connection
Esempio utilizzo:
response = execute_low_level(
'HGET', 'redis:key', 'hash:key', host='localhost', port=6379)
Ma, come ho detto prima, redis.Redis
è la strada da percorrere nel 99,9% dei casi.
Guardando il [codice sorgente] (https://github.com/andymccurdy/redis-py/blob/master/redis/client.py), 'StrictRedis' non implementa' close' o 'quit' metodi. – jonrsharpe
va bene che non chiudiamo la connessione, non credo di aver capito la connessione ai redis ... – nevermind
@nevermind Vedo 'r.client_kill', ma per scoprire quale client uccidere, devi elencali con 'r.client_list()'. Controllo '$ netstat | grep 6379' Ho visto, la connessione è entrata nello stato di "chiusura". C'è anche 'r.execute_command (" QUIT ")'. Ma non sono ancora sicuro, se lo fa, quello che chiedi. –