Latest web development tutorials

Redis Technology Pipeline

Redis est basé sur un modèle client - serveur et une demande / réponse des services de protocole TCP. Cela signifie qu'une demande sera généralement suivre les étapes suivantes:

  • Le client envoie une requête au serveur, et écoute les retours Socket, généralement en mode bloquant, en attendant la réponse du serveur.
  • commandes de traitement de serveur et renvoie les résultats au client.

Redis Technology Pipeline

Redis la technologie des pipelines ne peut pas répondre au moment du serveur, le client peut continuer à envoyer une requête au serveur, et, éventuellement, tout à la fois de lire la réponse du serveur.

Exemples

Voir pipeline Redis, juste vous devez démarrer Redis instance et entrez la commande suivante:

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

En utilisant l'exemple que nous le service de commandede PING de Redis ci - dessus est disponible, alors nous avons mis en place Redis valeur w3bigkey, puis nous obtenons la w3bigkey de valeur et faire incrément de visiteur 3 fois.

Dans les résultats retournés, nous pouvons voir ces commandes à la fois soumis à Redis le service, et, finalement, tout à la fois de lire la réponse du serveur


Avantage Technologie Pipeline

L'avantage le plus important de la technologie pour améliorer le service de Redis de performance de pipeline.

Certaines données de test

Dans le test suivant, nous allons utiliser le client Redis Ruby qui prend en charge les caractéristiques techniques de pipeline, la technologie des tubes d'essai pour améliorer l'effet de la vitesse.

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 
}

Depuis le réseau local sous Mac OS X système pour effectuer les données ci-dessus indiquent que ce script simple, ouvrez l'opération de pipeline, le délai d'aller-retour a été amélioré assez faible.

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

Comme vous pouvez le voir, le pipeline, nous accélérons l'efficacité de 5 fois.