![](/img/trans.png)
[英]Creating a NodeJS + Redis app causes an error with Exit code 139
[英]Configuring redis with nodejs app
問題是我有一個簡單的應用程序,我希望將我遇到的問題redisToGo部署到heroku上,以便與我在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身份驗證。
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
}));
使用節點dbOptions
客戶端時,需要使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.