如何在Node.js中为相同的两个应用程序分离Redis数据库

14

我有两个相同的应用程序,一个用于演示,一个用于开发。 我使用Redis数据库存储键值,如何为这两个不同的应用程序分离Redis数据库。 我正在使用Node.js作为Redis客户端,并且正在使用此https://github.com/mranney/node_redis/ Redis客户端。

如何在Node中将相同应用程序的Redis数据库分开。

1个回答

30
你可以在node_redis中使用.select(db, callback)函数。
var redis = require('redis'),
db = redis.createClient();

db.select(1, function(err,res){
  // you'll want to check that the select was successful here
  // if(err) return err;
  db.set('key', 'string'); // this will be posted to database 1 rather than db 0
});

如果您正在使用expressjs,您可以设置开发和生产环境变量来自动设置您正在使用的数据库。
var express = require('express'), 
app = express.createServer();

app.configure('development', function(){
  // development options go here
  app.set('redisdb', 5);
});

app.configure('production', function(){
  // production options here
  app.set('redisdb', 0);
});

然后你只需要调用一次db.select(),就可以设置productiondevelopment的选项。

db.select(app.get('redisdb'), function(err,res){ // app.get will return the value you set above
  // do something here
});

有关在expressjs中的开发/生产的更多信息:http://expressjs.com/guide.html#configuration

node_redis .select(db, callback) 回调函数将在第二个参数中返回OK,如果选择了数据库。可以在 node_redis readmeUsage 部分看到示例。


如何在Redis中创建数据库? - Nadhas
2
当你写下"The node_redis .select() function will return OK if the database is selected"时,我理解为我可以同步地使用它,依赖于其立即返回的值作为指示数据库选择命令已成功完成的指标。然而,该函数似乎是异步操作的,立即返回undefined。尽管如此,同步选择将非常方便。 - sheldonh
@sheldonh 是正确的,如果在一个脚本中操作2个数据库ID(select 1,select 2),那么在异步执行时会混淆这两个ID,我们应该创建2个连接(redis.createClient())来隔离它们。 - diyism
仅作为注意事项,此示例不意味着在运行时使用两个不同的数据库。相反,根据环境选择使用数据库5仅用于开发或仅使用数据库0用于生产。@diyism 也是正确的。如果您想要写入两个数据库ID,请确保您有两个连接到Redis数据库并将它们分别维护。 - slickplaid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接