English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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.
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.
A maior vantagem da tecnologia de canal é a melhoria do desempenho do serviço Redis.
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.