我有一个有效的服务器配置,其中无法访问redis,但服务器可以正常运行(我只是在无法找到redis时删除功能).
但是,我无法很好地管理连接错误.我想知道连接错误何时失败并在这种情况下关闭客户端.
我发现连接重试永远不会停止.实际上吞下了quit() – “排队等待下一次服务器连接”. – 被叫时
在没有建立连接的情况下,有没有办法杀死客户端?
var redis = require("redis"),client = redis.createClient(); client.on("error",function(err) { logme.error("Bonk. The worker framework cannot connect to redis,which might be ok on a dev server!"); logme.error("Resque error : "+err); client.quit(); }); client.on("idle",function(err) { logme.error("Redis queue is idle. Shutting down..."); }); client.on("end",function(err) { logme.error("Redis is shutting down. This might be ok if you chose not to run it in your dev environment"); }); client.on("ready",function(err) { logme.info("Redis up! Now connecting the worker queue client..."); });
> ERROR – Resque错误:错误:Redis连接到127.0.0.1:6379失败 – 连接ECONNREFUSED
>错误 – Redis正在关闭.如果您选择不在开发环境中运行它,这可能没问题
> ERROR – Resque错误:错误:Redis连接到127.0.0.1:6379失败 – 连接ECONNREFUSED
> ERROR – Resque错误:错误:Redis连接到127.0.0.1:6379失败 – 连接ECONNREFUSED
> ERROR – Resque错误:错误:Redis连接到127.0.0.1:6379失败 – 连接ECONNREFUSED
> ERROR – Resque错误:错误:Redis连接到127.0.0.1:6379失败 – 连接ECONNREFUSED
有趣的是,“结束”事件会被释放.为什么?
解决方法
您可能希望在
client.end()
错误时强制结束与redis的连接,而不是使用等待所有未完成请求完成的client.quit()然后发送QUIT命令,如您所知需要使用redis完成工作连接以完成.