время ожидания для Redis Hmget - PullRequest
0 голосов
/ 10 октября 2018
        RedisFuture<List<KeyValue<String, String>>> future = redisStatsConnection.hmget(key, 10);
if (!future.await(500, TimeUnit.MILLISECONDS)) {
                ....
            }

Я использовал Redis с Java и листьями салата.Для RedisAdvancedClusterAsyncCommands.hmget я пытаюсь добавить тайм-аут для него.Я думаю, что это должно быть сделано в течение 10 миллисекунд или около того, но оно всегда истекает, пока я не продолжу увеличивать число.

Могу ли я узнать, какое среднее время ожидания для Redis?или есть другое предложение?

1 Ответ

0 голосов
/ 11 октября 2018

Время, необходимое для выполнения запроса, зависит от следующих факторов:

  1. Время приема-передачи в сети (обычно ~ 1 мс с большинством облачных провайдеров, меньше в выделенных ЛВС)

  2. Сериализация / десериализация запроса - если вы выполняете HMGET из 1 миллиона ключей, это может занять много времени.

  3. Внутренняя обработка запроса внутри redis.Опять же, обычно не много (это может быть несколько микросекунд в быстрых случаях) времени, но это O (n) для числа элементов в HMGET.

  4. Сериализация / десериализацияответа.Чем больше полезная нагрузка HMGET, тем дольше это занимает.Redis необходимо скопировать данные в сетевые буферы, а клиент должен проанализировать ответы.Если ваш ответ большой, это может быть значительное время, проведенное в клиентской библиотеке или в Redis.

  5. Пропускная способность сети - чем больше ответ, тем больше пакетов необходимо отправить сети.Вы не ожидаете, что ответ в 1 ГБ вернется через 10 мс, верно?

  6. Другие запросы, обработанные redis.Это редко проблема, но если у вас долго работают Lua-скрипты, KEYS-команды, агрегатные пересечения или объединения, так как redis однопоточный, каждый запрос задерживает все остальные запросы.

Что яЯ говорю, что это действительно зависит от того, что вы делаете, и какие другие вещи вы делаете.10 мс, вероятно, слишком мало.Кроме того, помните, что у латентности есть распределение, и вы должны планировать среднюю, медиану, 90-ю процентиль и 99-ю процентиль ожидаемых задержек вашего приложения.

...