English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Redis - это TCP-сервис, основанный на модели клиент-сервер и протоколе запрос-ответ. Это означает, что обычно один запрос следует следующим шагам:
Клиент отправляет запрос на сервер и прослушивает Socket, обычно в блокирующем режиме, ожидая ответа сервера.
Сервер обрабатывает команды и возвращает результаты клиенту.
Технология Redis-канала позволяет клиенту продолжать отправлять запросы на сервер, когда сервер не отвечает, и в конечном итоге читать все ответы сервера一次性.
Чтобы проверить Redis-канал, нужно запустить пример Redis и ввести следующие команды:
$(echo -en "PING\r\nSET 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
В вышеуказанных примерах мы используем: PING Команда для проверки доступности Redis-сервиса: Затем мы установили значение w3codeboxkey в Redis, затем мы получили значение w3codeboxkey и увеличили visitor на 3 раза.
В возвращенных результатах мы можем увидеть, что эти команды一次性 передаются в Redis-сервис, и в конечном итоге все ответы сервера читаются一次性.
Наиболее значительным преимуществом технологии管道 является повышение производительности услуги Redis.
В следующих тестах мы будем использовать Ruby-клиент Redis, поддерживающий функциональность管道, чтобы проверить, как улучшает производительность технология管道.
require 'rubygems' require 'redis' def bench(descr) start = Time.now yield puts "#{descr} #{Time.now-start} секунд" 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 pipeline") { without_pipelining } bench("with pipeline") { with_pipelining }
Данные, полученные при выполнении этого простого скрипта на системе Mac OS X в локальной сети, показывают, что после включения管道 операций, время ожидания значительно уменьшилось.
без pipeline 1.185238 секунд с pipeline 0.250783 секунд
Как вы видите, после включения канала, наша скорость увеличилась в 5 раз.