English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tecnologia de Canal Redis

Redis é um serviço baseado em cliente-Modelo do servidor e solicitação/Protocolo de serviço TCP. Isso significa que, geralmente, uma solicitação seguirá os seguintes passos:

  • O cliente envia uma solicitação de consulta ao servidor e monitora a resposta do Socket, geralmente em modo bloqueante, esperando a resposta do servidor.

  • O servidor processa os comandos e retorna os resultados ao cliente.

Tecnologia de Canal Redis

A tecnologia de canal Redis pode continuar a enviar solicitações ao servidor enquanto o servidor não responder, e, finalmente, ler todas as respostas do servidor de uma vez.

Exemplo online

Para verificar o canal Redis, basta iniciar o exemplo Redis e inserir o seguinte comando:

$(echo -en "PING\r\n SET w3codeboxkey redis\r\nGET w3codeboxkey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379
+PONG
+OK
redis
:1
:2
:3

Neste exemplo, usamos PING comando para verificar se o serviço Redis está disponível, depois de configurar w3o valor de codeboxkey é redis, então obtemos w3o valor de codeboxkey e faz com que visitor aumente. 3 vez.

Nós podemos ver nos resultados de volta que esses comandos são submetidos ao serviço Redis de uma vez e, finalmente, todas as respostas do servidor são lidas de uma vez.

Vantagens da tecnologia de canal

A maior vantagem da tecnologia de canal é a melhoria do desempenho do serviço Redis.

Alguns dados de teste

Nos testes a seguir, usaremos o cliente Ruby do Redis, que suporta a característica de canal, para testar o efeito de melhoria da velocidade da tecnologia de canal.

require 'rubygems' 
require 'redis'
def bench(descr) 
início = Time.now 
yield 
puts "#{descr} #{Time.now-início} segundos" 
fim
def without_pipelining 
r = Redis.new 
10000.vezes { 
    r.ping 
} 
fim
def with_pipelining 
r = Redis.new 
r.pipelined { 
    10000.vezes { 
        r.ping 
    } 
} 
fim
bench("sem pipelining") { 
    without_pipelining 
} 
bench("com pipelining") { 
    with_pipelining 
}

Os dados do script simples executado no sistema Mac OS X da rede local indicam que, após a ativação da operação de canal, o atraso de ida e volta foi significativamente reduzido.

sem pipelining 1.185238 segundos 
com pipelining 0.250783 segundos

Como você pode ver, após a ativação do canal, a eficiência da velocidade foi significativamente melhorada5Multiplicador.