Как установить тайм-аут чтения на узле клиента Redis?

На github я не вижу опции для тайм-аута чтения, https://github.com/NodeRedis/node_redis

Есть connect_timeout, но это для установления соединения, а не для чтения/записи.


person the1plummie    schedule 03.09.2015    source источник
comment
Если вы не можете читать/писать, вы не будете подключены... Похоже, это обрабатывается в логике подключения/повторного подключения/connect_timeout. Задержка будет довольно низкой - вас беспокоит задержка менее 100 мс?   -  person pherris    schedule 03.09.2015
comment
@pherris мне кажется, что действия чтения/записи могут занять много времени (интересно, почему ...), и что цель состоит в том, чтобы их сократить. Однако, учитывая, что у самого Redis нет такого механизма (AFAIK), я не думаю, что его можно правильно реализовать (я не думаю, что вы можете отменить чтение/запись).   -  person robertklep    schedule 03.09.2015


Ответы (2)


Нет встроенной опции, но вы можете обернуть свой вызов обработчиком тайм-аута. См. вопрос здесь и суть связанного ответа здесь.

person Ofir Luzon    schedule 07.09.2015

Вы можете попробовать приемы, упомянутые в другом ответе, если вам действительно нужно какое-то значение тайм-аута для определенного метода (GET в вашем случае), но если ваша проблема заключается в том, что метод просто зависает, а не генерирует исключение, когда он не может подключиться к серверу , вы можете установить enable_offline_queue в false. Это приведет к тому, что все команды Redis немедленно вызовут исключение, чтобы вы могли продолжить работу с оставшимся кодом, а не ждать, пока текущая команда истечет по тайм-ауту (по умолчанию для Node Redis — 60 минут, повторные попытки подключения продолжаются в течение 1 часа).

Имейте в виду, что если для enable_offline_queue установлено значение false, команды, которые вы вводите, когда есть какая-то проблема с подключением к серверу, никогда не будут выполняться.

person Stupid Man    schedule 31.03.2021