即使没有运行本地服务器,此代码也可以正常运行。 这是正确的行为还是错误?
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
关闭票?
我在docker中运行它,没有redis。 让我再检查一下。
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
关闭票?
我的机器和 docker 容器中没有 redis-server 进程。 另外,我没有任何进程侦听 6379 端口( netstat -an | grep 6379
返回任何内容)。
Redis 必须在某个地方运行,我在我的环境中尝试过并运行
/etc/init.d/redis-server stop
。 第一次完全按照你说的做,因为我很困惑! 然后我运行ps -aux | grep redis-server
发现我有七个 Redis 实例在后台运行,哈哈。 全部杀完后,node redis 马上就按预期报错了。
我没有找到运行 redis-server 的任何进程。
我准备了一个重现问题的例子,请看这个 repo https://github.com/mikhailsidorov/redis-issue
这段代码运行没有任何错误,我没有在测试机器和 docker 容器上运行 redis-server 进程。
您是否有机会运行 redis-mock 或类似的东西? (怀疑,只是检查......)
https://github.com/faeldt/redis-mock
这是我关闭 Redis 并运行我的应用程序时收到的错误...(这不是您提供的 docker 应用程序)我需要设置 docker,我仍然没有使用 docker,我必须与时俱进。 稍后会尝试......
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 并运行我的应用程序时收到的错误...(这不是您提供的 docker 应用程序)我需要设置 docker,我仍然没有使用 docker,我必须与时俱进。 稍后会尝试......
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重试连接/重新连接代码似乎完全被破坏了,有很多关于这些问题的未解决的票证。 今晚我在其他 nodeJS 模块上提交了 PR 请求,我会尝试深入研究并尽可能提交有效的 PR。
哦,好吧,认为我们现在在同一页上......
是的,目前 node_redis重试连接/重新连接代码似乎完全被破坏了,有很多关于这些问题的未解决的票证。 今晚我在其他 nodeJS 模块上提交了 PR 请求,我会尝试深入研究并尽可能提交有效的 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 -