2011-06-10 28 views
7

Tengo dos aplicaciones que se ejecutan en una para demo y otra para desarrollo .ym usando la base de datos redis para almacenar el valor clave, ¿cómo puedo separar la base de datos redis para estas dos aplicaciones diferentes m usando node.js para el cliente redis. y estoy usando este cliente redis https://github.com/mranney/node_redis/.Cómo separar la base de datos redis para la misma aplicación dos en node.js

cómo separar la base de datos de redis para la misma aplicación en el nodo.

Respuesta

17

Puede usar la función .select(db, callback) en node_redis.

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 
}); 

Si está utilizando expressjs, puede establecer una variable de entorno de desarrollo y de producción para establecer automáticamente qué base de datos que está utilizando.

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); 
}); 

entonces usted puede hacer una llamada a db.select() y tienen las opciones establecidas para production o development.

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

Más información sobre dev/producción en expressjs: http://expressjs.com/guide.html#configuration

La función de devolución de llamada .select(db, callback)node_redis volverá OK en el segundo argumento, si se selecciona la base de datos. Se puede ver un ejemplo de esto en la sección Usage del node_redis readme.

+0

+1 para la conmutación de base de datos de entorno express! – Raynos

+0

cómo crear db en redis ?? – Udhaya

+2

Cuando escribe "La función node_redis .select() devolverá OK si la base de datos está seleccionada", leí que puedo usarla de forma síncrona, confiando en su valor de retorno inmediato como indicador de que el comando de selección de base de datos se ha completado exitosamente. Sin embargo, la función parece funcionar de forma asíncrona, volviendo indefinidamente de forma inmediata. Sin embargo, la selección sincrónica sería súper conveniente. – sheldonh

Cuestiones relacionadas