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.