Latest web development tutorials

Redis Pipeline Technologia

Redis jest oparty na modelu klient - serwer oraz żądanie / odpowiedź usług protokołu TCP. Oznacza to, że wniosek będzie typowo wykonaj następujące kroki:

  • Klient wysyła zapytanie do serwera, a słucha Socket zyski, zwykle w tryb blokowania, oczekiwanie na odpowiedź serwera.
  • Serwer przetwarza polecenia i zwraca wyniki do klienta.

Redis Pipeline Technologia

Redis technologii rurociąg nie może odpowiedzieć w czasie serwer, klient może nadal wysyła żądanie do serwera, a ostatecznie wszystkie naraz, aby przeczytać odpowiedź serwera.

Przykłady

Zobacz Redis rurociągu, po prostu trzeba zacząć Redis instancji i wprowadź następujące polecenie:

$(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

Przy użyciu powyższym przykładzie usługi Redis polecenieping jest dostępna, a następnie stworzyliśmy Redis wartości w3bigkey, a następnie otrzymujemy w3bigkey wartość i dokonać odwiedzających przyrost 3 razy.

W zwróconych wyników, widzimy tych poleceń na raz przedłożony Redis usługę, a ostatecznie wszystkie naraz, aby przeczytać odpowiedź serwera


Przewaga technologii Pipeline

Najistotniejszą zaletą technologii w celu poprawy obsługi Redis wydajności rurociągu.

Niektóre dane testowe

W poniższym teście użyjemy klienta Redis Ruby, który obsługuje rurociągów właściwości techniczne, technologia pipe test wzmocnić efekt prędkości.

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 
}

Z sieci LAN w systemie Mac OS X, aby wykonać powyższe dane wskazują, że ten prosty skrypt, otwórz eksploatacji rurociągu, opóźnienie w obie strony został poprawiony dość niska.

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

Jak widać, otwórz rurociągu, możemy przyspieszyć wydajność o 5 razy.