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.