Получение нескольких хэшей из Redis с помощью StackExchange.Redis

Мне нужно получить около 10 тысяч хэшей с сервера Redis. Поскольку в Redis нет команды для получения нескольких хэшей, я перебирал все ключи, используя вызов db.HashGetAllAsync(), а затем ждал завершения всех задач. Несмотря на то, что это сработало, я заметил резкий всплеск задержки на панели управления RedisLabs во время этих вызовов.

Есть ли способы получить много хешей одновременно? Может есть какие ConnectionMultiplexer настройки могут помочь в этой ситуации?


person pauliusnrk    schedule 17.03.2015    source источник
comment
Вы выполняете несколько вызовов этого вызова, а затем ожидаете возврата всех результатов? Если да, сколько одновременных подключений у вас запущено?   -  person The Real Bill    schedule 18.03.2015


Ответы (1)


Не существует varadic hgetall, так что да: самый простой подход - это конвейерная обработка огромного количества отдельных hgetall. Единственное, что вы могли бы даже возможно сделать, - это использовать сценарий Lua (_3 _ / _ 4_) для создания нескольких элементов в каждом элементе, но я не вижу, как это снизит нагрузку на сервер или пропускную способность. любой, так что пробовать не стоит!

В любом случае, да: это вызовет некоторую работу на сервере.

person Marc Gravell    schedule 17.03.2015
comment
Я предполагаю, что использование сценария Lua в ситуации, когда я пытаюсь получить 10 тысяч хэшей, поставит другие вызовы redis в очередь и еще больше увеличит задержку. - person pauliusnrk; 17.03.2015
comment
@pauliusnrk да, я тоже так думаю; ваш лучший выбор здесь, IMO, было бы выполнить массовое чтение хэша с ведомого устройства - person Marc Gravell; 17.03.2015