почему конвейерная рассылка redis должна ставить в очередь ответы на сервере - PullRequest
0 голосов
/ 02 марта 2020

Согласно документации Redis

ВАЖНОЕ ПРИМЕЧАНИЕ. Пока клиент отправляет команды с использованием конвейерной обработки, сервер будет вынужден ставить в очередь ответы, используя память. Поэтому, если вам нужно отправить много команд с конвейерной обработкой, лучше отправлять их в виде пакетов, имеющих разумное количество, например, команды 10k, читать ответы, а затем снова отправлять еще 10k команд и так далее. Скорость будет почти такой же, но используемая дополнительная память будет на максимальном количестве, необходимом для постановки в очередь ответов на эти команды 10k.

  • Клиент отправляет конвейерные команды в пакетном и последовательном порядке .
  • Последовательная передача TCP.
  • Сервер Redis выполняет команды с одним потоком, поэтому выполняется последовательно.

Похоже, что сервер Redis может ответить немедленно, когда одна команда закончила выполнение, пакетный буфер должен быть обязанностью клиента.

Почему серверу redis нужно ставить в очередь ответы на стороне сервера, разве это не будет потрачено впустую ресурсов?

...