2014-11-19 3 views
4

Я хочу использовать конвейер для сокращения числа взаимодействий между моей программой и redis-сервером.
Я могу установить множество команд в конвейере, но я не смог найти ни одного документа, описывающего максимальное количество команд, которые можно было бы установить в конвейере.Сколько команд может иметь конвейер redis-py?

Есть ли какие-либо советы? Заранее спасибо.

ответ

5

Не уверен, что есть максимум, но я не думаю, что вы хотите достичь его на случай.

В большинстве случаев максимальный размер трубопровода до 100-1000 операций дает наилучшие результаты. Но вы можете сделать небольшое тестовое исследование, которое включает в себя типичные запросы, которые вы отправляете. Запросы конвейеризации обычно хороши, но имейте в виду, что ответы хранятся в памяти Redis до тех пор, пока не будут обслуживаться все запросы на конвейер, и ваш клиент ждет длинного ответа всех запросов.

Вы должны попытаться найти сладкое пятно одновременных соединений, конвейерных запросов и памяти Redis.

Ваш клиент не начнет читать ответы, пока последний запрос вашего конвейера не будет отправлен в Redis. Когда трубопровод слишком длинный, он имеет потенциал для блокировки.

Вы можете использовать redis-benchmark или memtier_benchmark. Here's - более подробное описание и инструкции по memtier_benchmark.

Когда вы найдете количество конвейерных запросов и количество соединений, вы должны реализовать его с вашим клиентом redis-py в своем приложении.

+0

Важнейшим аспектом здесь является тестирование вашего собственного варианта использования. Я видел широкий диапазон того, что лучше всего работает в разных сценариях. Я видел, что лучшее число будет меньше 50 для некоторых и более 2000 для других. –

Смежные вопросы