Когда конвейеризация Redis станет более эффективной?

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

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

Если мне нужно запросить что-то три раза.. и т.д.

Когда конвейерная обработка становится более эффективной, чем использование экземпляра Redis?~

Спасибо


person Archie    schedule 17.10.2018    source источник


Ответы (1)


Если вы работаете только один раз, это то же самое.

Конвейерный механизм, подобный пакетному процессу. Если у вас есть три команды для выполнения обычным способом, клиент должен отправить три TCP-пакета и получить три TCP-пакета (каждая команда должна отправить один и получить один); но при использовании конвейерной обработки команда клиентского пакета 3 на сервер просто отправляет один TCP-пакет и получает его.

Вы можете ознакомиться с официальным документом: Использование конвейерной обработки для ускорения запросов Redis

person shaoyihe    schedule 17.10.2018
comment
Спасибо, это логично и очень полезно! - person Archie; 17.10.2018
comment
Привет, означает ли это, что я всегда должен использовать конвейерную обработку, когда на сервер нужно отправить более 1 команды? Есть ли недостатки? Я задаю этот вопрос в stackoverflow.com/questions/54900928. Можешь глянуть, когда будет время. Большое спасибо. - person sgon00; 27.02.2019
comment
@ sgon00 Да, есть, потому что сервер Redis — это один поток для обработки команды. Если один клиент отправит большую конвейерную команду, он заблокирует обработку другого клиента. Так же, как mysql, вы можете запрашивать 10000 строк одновременно или запрашивать 100 строк 100 раз. - person shaoyihe; 27.02.2019
comment
@shaoyihe понял это. большое спасибо за ваш ответ. так что я должен передать 10 команд SET? или я должен просто отправить их по одному? - person sgon00; 27.02.2019
comment
@ sgon00 Нет единого решения. Я предпочитаю конвейерные 10 команд SET. - person shaoyihe; 28.02.2019