Время, необходимое для выполнения запроса, зависит от следующих факторов:
Время приема-передачи в сети (обычно ~ 1 мс с большинством облачных провайдеров, меньше в выделенных ЛВС)
Сериализация / десериализация запроса - если вы выполняете HMGET из 1 миллиона ключей, это может занять много времени.
Внутренняя обработка запроса внутри redis.Опять же, обычно не много (это может быть несколько микросекунд в быстрых случаях) времени, но это O (n) для числа элементов в HMGET.
Сериализация / десериализацияответа.Чем больше полезная нагрузка HMGET, тем дольше это занимает.Redis необходимо скопировать данные в сетевые буферы, а клиент должен проанализировать ответы.Если ваш ответ большой, это может быть значительное время, проведенное в клиентской библиотеке или в Redis.
Пропускная способность сети - чем больше ответ, тем больше пакетов необходимо отправить сети.Вы не ожидаете, что ответ в 1 ГБ вернется через 10 мс, верно?
Другие запросы, обработанные redis.Это редко проблема, но если у вас долго работают Lua-скрипты, KEYS-команды, агрегатные пересечения или объединения, так как redis однопоточный, каждый запрос задерживает все остальные запросы.
Что яЯ говорю, что это действительно зависит от того, что вы делаете, и какие другие вещи вы делаете.10 мс, вероятно, слишком мало.Кроме того, помните, что у латентности есть распределение, и вы должны планировать среднюю, медиану, 90-ю процентиль и 99-ю процентиль ожидаемых задержек вашего приложения.