使用nodejs应用程序configurationredis
问题是我有一个简单的应用程序,我希望部署到Heroku我的问题是获得redisToGo与我的应用程序在heroku上工作。 任何帮助将不胜感激。
这是我的app.js
var conf = { port: 8888, debug: false, dbPort: 6379, dbHost: '127.0.0.1', dbOptions: {}, mainroom: 'MainRoom' }; var express = require('express'), http = require('http'), socketio = require('socket.io'), events = require('events'), _ = require('underscore'), redis = require('redis'), sanitize = require('validator').sanitize; var app = express(), server = http.createServer(app), io = socketio.listen(server); server.listen(conf.port); app.configure(function() { app.use(express.bodyParser()); app.use(express.static(__dirname + '/static')); }); var RedisStore = require('socket.io/lib/stores/redis'), pub = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions), sub = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions), db = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions); io.set('store', new RedisStore({ redisPub: pub, redisSub: sub, redisClient: db })); io.set('log level', 1);
我试过这样做,但没有运气…..
var conf = { port: 8888, debug: false, dbPort: 9685, dbHost: 'redis://redistogo:<pass>@sole.redistogo.com:9685/', dbOptions: {}, mainroom: 'MainRoom' };
我不断收到这个错误
Error: Redis connection to redis://redistogo:<pass>@sole.redistogo.com:9685/ failed - connect ENOENT
我也试过这个,并得到它连接,但现在它抱怨错误:错误:NOAUTH身份validation要求。
var conf = { port: 8888, debug: false, dbPort: 9685, db: 'xxxxxxxx', dbPass: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx', dbHost: 'xxxx.redistogo.com', dbOptions: {no_ready_check: true}, mainroom: 'MainRoom' }; // Socket.io store configuration var RedisStore = require('socket.io/lib/stores/redis'), pub = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions, conf.dbPass), sub = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions, conf.dbPass), db = redis.createClient(conf.dbPort, conf.dbHost, conf.dbOptions, conf.dbPass); io.set('store', new RedisStore({ redisPub: pub, redisSub: sub, redisClient: db }));
使用node-redis客户端时,需要使用auth_pass
上的auth_pass
属性来声明redis密码:
var conf = { port: 8888, debug: false, dbPort: 9685, db: 'xxxxxxxx', dbHost: 'xxxx.redistogo.com', dbOptions: { auth_pass: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx' no_ready_check: true, }, mainroom: 'MainRoom' }; var db = redis.createClient( conf.dbPort, conf.dbHost, conf.dbOptions );
如果你看看API,你可以看到redis.createClient
不接受密码属性:
redis.createClient(端口,主机选项)
而auth_pass
选项就是你正在寻找的东西:
auth_pass
默认为null。 默认情况下,客户端将尝试连接,而不授权。 如果设置,客户端将在连接上运行redis auth命令。
https://github.com/NodeRedis/node_redis/blob/master/README.md#overloading