Redis Tecnologia Pipeline
Redis é baseado em um modelo cliente - servidor e um pedido / resposta serviços de protocolo TCP. Isto significa que um pedido irá tipicamente seguir estes passos:
- O cliente envia uma consulta para o servidor, e escuta retornos soquete, geralmente no modo de bloqueio, esperando a resposta do servidor.
- comandos de processamento do servidor e retorna os resultados para o cliente.
Redis Tecnologia Pipeline
Redis tecnologia oleoduto não pode responder no momento do servidor, o cliente pode continuar a enviar um pedido ao servidor, e, eventualmente, todos ao mesmo tempo a ler a resposta do servidor.
Exemplos
Veja gasoduto Redis, só você precisa para começar a redis instância e digite o seguinte 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
Ao usar o serviço Redis comandoPING exemplo que acima está disponível, em seguida, temos um conjunto de Redis valor w3bigkey, em seguida, obtemos o valor w3bigkey e fazer incremento visitante 3 vezes.
Nos resultados retornados, podemos ver estes comandos de uma vez submetidos a Redis serviço, e, finalmente, todos ao mesmo tempo a ler a resposta do servidor
Vantagem Pipeline Tecnologia
A vantagem mais significativa da tecnologia para melhorar o serviço Redis desempenho pipeline.
Alguns dados de teste
No teste seguinte, usaremos o cliente Redis Ruby que suporta características técnicas de pipeline, a tecnologia de tubo de teste para aumentar o efeito da velocidade.
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 }
A partir da LAN no sistema Mac OS X para executar os dados acima indicam que este script simples, abra a operação de gasoduto, o atraso de ida e volta foi melhorado bastante baixa.
without pipelining 1.185238 seconds with pipelining 0.250783 seconds
Como você pode ver, abrir o pipeline, nós acelerar a eficiência em 5 vezes.