Node.js / Redis - 等待连接?

时间:2014-09-21 06:43:34

标签: node.js redis

我在Node.js中开发一个使用Redis作为其主数据库的应用程序,并在Redis不可用时回退到MySQL。

我遇到的问题是,与node-mysql不同,node_redis不接受createClient()方法的回调,只是在发生错误时才发出错误失败。

如何构建我的代码来处理这个问题?

我需要的基本上是这个(伪代码):

if can_connect_on_redis
    use_redis
else
    if can_connect_mysql
       use_mysql
    else
       fail
    end
end

1 个答案:

答案 0 :(得分:3)

未测试:

var client  = redis.createClient();
var isReady = false;
var isError = false;

client.on('error', function() {
  if (! isReady && ! isError) {
    // perform your MySQL setup here
  }
  isError = true;
}).on('ready', function() {
  isReady = true;
});

这个想法是,当你在客户端准备好之前收到错误时,你可以认为与Redis的连接失败了,你可以回到使用MySQL。因为客户端将尝试重新连接,所以它将继续生成错误事件,因此isError保护。

如果您希望在客户端(成功)设置连接后(例如,当Redis服务器停止时)回退到MySQL,则可以删除isReady逻辑。