【问题标题】:How to separate redis database for same two app in node.js如何在node.js中为相同的两个应用程序分离redis数据库
【发布时间】:2011-06-10 10:14:05
【问题描述】:

我有两个相同的应用程序在不同的应用程序上运行,一个用于演示,一个用于开发。m 使用 redis 数据库存储键值,我如何为这两个不同的应用程序分离 redis 数据库。 m 使用 node.js 作为 redis 客户端。和 m 使用这个 https://github.com/mranney/node_redis/ redis 客户端。

如何在节点中为同一应用程序分离 redis 数据库。

【问题讨论】:

    标签: node.js redis key-value-store


    【解决方案1】:

    你可以在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中创建db??
    • 当你写“如果选择了数据库,node_redis .select() 函数将返回 OK”,我读到我可以以同步方式使用它,依靠它的立即返回值作为指标数据库选择命令已成功完成。但是,该函数似乎是异步操作的,立即返回 undefined。不过,同步选择会非常方便。
    • @sheldonh 是对的,如果你在一个脚本中操作2个db ids(select 1, select 2),这2个在异步执行时会混淆,我们应该创建2个连接(redis.createClient() ) 来隔离它们。
    • 请注意,此示例并不意味着在运行时使用两个不同的数据库。取而代之的是,根据环境进行选择,是在运行时使用数据库 5 仅用于开发还是使用数据库 0 仅用于生产。 @diyism 也是正确的。如果要写入两个数据库ID,请确保您有两个到redis数据库的连接并分别维护它们。
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多