Latest web development tutorials

Redis Pipeline Tecnologia

Redis si basa su un client - modello di server e una richiesta / risposta servizi TCP protocollo. Ciò significa che una richiesta in genere attenersi alla seguente procedura:

  • Il client invia una query al server, e ascolta i rendimenti Socket, di solito in modalità di blocco, in attesa della risposta del server.
  • comandi di elaborazione server e restituisce i risultati al client.

Redis Pipeline Tecnologia

Redis tecnologia tubazione non può rispondere al momento del server, il client può continuare a inviare una richiesta al server, e alla fine tutto in una volta per leggere la risposta del server.

Esempi

Vedere gasdotto Redis, solo è necessario avviare Redis istanza e digitare il seguente comando:

$(echo -en "PING\r\n SET w3bigkey redis\r\nGET w3bigkey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379

+PONG
+OK
redis
:1
:2
:3

Usando il precedente esempio abbiamo il servizio Redis comandoPING è disponibile, quindi abbiamo istituito Redis valore w3bigkey, e quindi si ottiene il valore w3bigkey e rendere incremento dei visitatori 3 volte.

Nei risultati restituiti, possiamo vedere questi comandi contemporaneamente presentata Redis servizio, e infine tutti in una volta per leggere la risposta del server


Vantaggio Pipeline Tecnologia

Il vantaggio più significativo della tecnologia per migliorare il servizio Redis prestazioni pipeline.

Alcuni dati di test

Nel seguente test, useremo il client Redis Rubino che supporta le caratteristiche tecniche della pipeline, la tecnologia del tubo di prova per migliorare l'effetto della velocità.

require 'rubygems' 
require 'redis'
def bench(descr) 
start = Time.now 
yield 
puts "#{descr} #{Time.now-start} seconds" 
end
def without_pipelining 
r = Redis.new 
10000.times { 
	r.ping 
} 
end
def with_pipelining 
r = Redis.new 
r.pipelined { 
	10000.times { 
		r.ping 
	} 
} 
end
bench("without pipelining") { 
	without_pipelining 
} 
bench("with pipelining") { 
	with_pipelining 
}

Dalla LAN in Mac OS X sistema per eseguire i dati di cui sopra indicano che questo semplice script, aprire l'operazione condotta, il ritardo di andata e ritorno è stato migliorato piuttosto basso.

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

Come si può vedere, aprire la conduttura, acceleriamo l'efficienza di 5 volte.