Этот код работает без ошибок, даже если нет запущенного локального сервера. Это правильное поведение или ошибка?
const redis = require('redis')
const redisClient = redis.createClient({ retry_strategy: () => 1000 })
@mikhailsidorov - Да, это правильно, так как по умолчанию используются параметры localhost и 6379 соответственно.
О, но вы утверждаете, что локальный сервер Redis не работает? хахаха
Это было бы невероятно странно.
Я гарантирую, что у вас все еще работает экземпляр Redis ... перейдите в консоль командной строки Linux.
Просмотреть все запущенные экземпляры Redis
ps -aux | grep redis-server
Убить все экземпляры Redis
killall redis-server
Закрыть билет?
Я запустил его в докере, без редиса. Позвольте мне еще раз проверить.
Redis должен где-то работать, я пробовал это в своей среде и запустил /etc/init.d/redis-server stop
. В первый раз это произошло именно так, как вы упомянули, потому что я был сбит с толку! Затем я запустил ps -aux | grep redis-server
обнаружил, что у меня семь экземпляров Redis работают в фоновом режиме, лол. После уничтожения всех, node redis сразу же выдает ошибку, как и ожидалось.
@mikhailsidorov - Да, это правильно, так как по умолчанию используются параметры localhost и 6379 соответственно.
О, но вы утверждаете, что локальный сервер Redis не работает? хахаха
Это было бы невероятно странно.Я гарантирую, что у вас все еще работает экземпляр Redis ... перейдите в консоль командной строки Linux.
Просмотреть все запущенные экземпляры Redis
ps -aux | grep redis-server
Убить все экземпляры Redis
killall redis-server
Закрыть билет?
На моей машине и в контейнере докеров нет процессов redis-server. Кроме того, у меня нет ни одного процесса, который прослушивает порт 6379 ( netstat -an | grep 6379
ничего не возвращает).
Redis должен где-то работать, я пробовал это в своей среде и запустил
/etc/init.d/redis-server stop
. В первый раз это произошло именно так, как вы упомянули, потому что я был сбит с толку! Затем я запустилps -aux | grep redis-server
обнаружил, что у меня семь экземпляров Redis работают в фоновом режиме, лол. После уничтожения всех, node redis сразу же выдает ошибку, как и ожидалось.
Я не нашел ни одного запущенного процесса redis-server.
Я подготовил пример воспроизведения проблемы, см. Это репо https://github.com/mikhailsidorov/redis-issue
Этот код работает без ошибок, и у меня не запускались процессы redis-server на тестируемой машине и в контейнере докеров.
Вы случайно не запускаете redis-mock или что-то подобное? (Сомневаюсь, просто проверяю ...)
https://github.com/faeldt/redis-mock
Вот ошибка, которую я получаю, когда выключаю Redis и запускаю свое приложение ... (Это не приложение для докеров, которое вы предоставили). Мне нужно настроить докер, я все еще не использую докер, мне нужно идти в ногу со временем. Попробую чуть позже ....
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1054:14)
Emitted 'error' event at:
at RedisClient.on_error (/mnt/c/indospace.io/services/node_modules/redis/index.js:406:14)
at Socket.<anonymous> (/mnt/c/indospace.io/services/node_modules/redis/index.js:279:14)
at Socket.emit (events.js:196:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at processTicksAndRejections (internal/process/task_queues.js:84:17)
Вы случайно не запускаете redis-mock или что-то подобное? (Сомневаюсь, просто проверяю ...)
https://github.com/faeldt/redis-mockВот ошибка, которую я получаю, когда выключаю Redis и запускаю свое приложение ... (Это не приложение для докеров, которое вы предоставили). Мне нужно настроить докер, я все еще не использую докер, мне нужно идти в ногу со временем. Попробую чуть позже ....
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED 127.0.0.1:6379 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1054:14) Emitted 'error' event at: at RedisClient.on_error (/mnt/c/indospace.io/services/node_modules/redis/index.js:406:14) at Socket.<anonymous> (/mnt/c/indospace.io/services/node_modules/redis/index.js:279:14) at Socket.emit (events.js:196:13) at emitErrorNT (internal/streams/destroy.js:91:8) at emitErrorAndCloseNT (internal/streams/destroy.js:59:3) at processTicksAndRejections (internal/process/task_queues.js:84:17)
Нет, я не использую redis-mock. Когда я запускаю const redisClient = redis.createClient()
без параметров, у меня такая же ошибка, но когда я передаю { retry_strategy: () => 1000 }
я получаю эту проблему.
о, ладно, думаю, теперь мы на одной волне ...
Да, код повторного подключения / повторного подключения node_redis кажется полностью заблокированным на данный момент, существует множество открытых тикетов, относящихся к этим проблемам. Сегодня вечером мне прислали PR-запросы по другим модулям nodeJS, я постараюсь погрузиться в это и отправить действительный PR, когда смогу.
о, ладно, думаю, теперь мы на одной волне ...
Да, код повторного подключения / повторного подключения node_redis кажется полностью заблокированным на данный момент, существует множество открытых тикетов, относящихся к этим проблемам. Сегодня вечером мне прислали PR-запросы по другим модулям nodeJS, я постараюсь погрузиться в это и отправить действительный PR, когда смогу.
Спасибо
Это сделано намеренно. Отметьте connect_timeout
: Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed.
.
Намерение состоит в том, чтобы иметь очень мощную функцию, в которой вся логика повторного подключения находится в руках пользователя. Однако это не всегда может быть идеальным.
Это сделано намеренно. Отметьте
connect_timeout
:Default is to try connecting until the default system socket timeout has been exceeded and to try reconnecting until 1h has elapsed.
.Намерение состоит в том, чтобы иметь очень мощную функцию, в которой вся логика повторного подключения находится в руках пользователя. Однако это не всегда может быть идеальным.
Спасибо тебе за пояснение.
@mikhailsidorov - закрытый вопрос?
@knoxcard Я хотел бы оставить это открытым для себя, чтобы изучить это еще раз, когда у меня будет время.
@knoxcard, кстати, спасибо, что рассмотрели пару вопросов! Вы заинтересованы в большей помощи?
@BridgeAR - абсолютно! как мне еще помочь?
@mikhailsidorov - закрытый вопрос?
Конечно, если понадобится. Спасибо
@mikhailsidorov - не