首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NodeJs -使用redis,连接-redis与快递

NodeJs -使用redis,连接-redis与快递
EN

Stack Overflow用户
提问于 2012-08-20 12:57:06
回答 3查看 32.8K关注 0票数 12

注意:对于那些与Redis做斗争的人,必须启动Redis服务器。在windows上,有一个redis发行版,请查看以下链接: https://github.com/dmajkic/redis/downloads 然后启动"redis-server.exe"启动服务器

我正在学习一个关于node.js的教程。本教程使用Express和Redis。我安装了redis并连接-redis(它们在package.json中引用):

代码语言:javascript
复制
npm install redis connect-redis --save

在我的server.js (唯一有意义的部分)中:

代码语言:javascript
复制
var express = require('express');
var http = require('http');
var app = module.exports = express();
var RedisStore = require('connect-redis')(express);

var redis = require("redis").createClient();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  console.log('views', __dirname + '/views');
  app.set('view engine', 'jade'); //jade as template engine
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({
      secret: "kqsdjfmlksdhfhzirzeoibrzecrbzuzefcuercazeafxzeokwdfzeijfxcerig",
      store: new RedisStore({ host: 'localhost', port: 3000, client: redis })
  }));
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

错误信息:

代码语言:javascript
复制
Express server listening on port 3000
[ERROR] Error
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
    at RedisClient.on_error (D:\Programming\Screencasts\peepcode\nodejs\peepcode
-069-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:140:
24)
    at Socket.<anonymous> (D:\Programming\Screencasts\peepcode\nodejs\peepcode-0
69-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:74:14)

    at Socket.EventEmitter.emit (events.js:88:17)
    at Socket._destroy.self.errorEmitted (net.js:329:14)
    at process.startup.processNextTick.process._tickCallback (node.js:244:9)
[ERROR] Error
Error: Redis connection to 127.0.0.1:6379 failed - connect ECONNREFUSED
    at RedisClient.on_error (D:\Programming\Screencasts\peepcode\nodejs\peepcode
-069-full-stack-nodejs-i-mov\code\roland\HotPie\node_modules\redis\index.js:140:
24)
    at Socket.<anonymous> (D:\Programming\Screencasts\peepcode\nodejs\peepcode-0

特快专递开始监听3000端口,这正是我所期望的。redis错误消息提到了端口6379上的连接。如果我将redisClient传递给RedisStore,这就是我理解的绑定redis和RedisStore的方法,就会发生这种情况。

我正在Windows上开发

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-20 17:29:25

看来你没在运行redis服务器。关于如何下载、安装和运行服务器和客户端,您对Redis.io/下载有了一个很好的解释。

票数 3
EN

Stack Overflow用户

发布于 2012-12-12 14:34:08

代码提供的很好,只是配置错误。只需更改端口号即可。

例如,当安装到redis存储的连接时,您将告诉应用程序Redis服务器位于何处,以及它正在侦听哪个端口。还可以一起删除端口指令,连接- redis将使用远程redis服务器的默认端口。

在这种情况下,我建议尝试以下代码片段:

更改:

代码语言:javascript
复制
store: new RedisStore({ ..., port: 3000, ... })

新的:

代码语言:javascript
复制
store: new RedisStore({..., port: 6379, ... })

更新:

我忘了声明命令netstatpingtelnet可以帮助调试本地打开的端口以及返回应用程序的服务。这两个命令将在cmd.exe/powershell中执行,如果您在unix环境(如Linux、OSX或BSD )中执行,则在bash下执行。

这方面的一个例子是执行以下内容:

Windows:

代码语言:javascript
复制
netstat -np tcp | find "3000"

netstat -np tcp | find "6379"

Linux:

代码语言:javascript
复制
netstat -nlt | grep '3000\|6379'

这是为localhost:3000或localhost:6379报告本地打开的端口。如果您使用远程系统,那么您将使用ping来查看服务器是否已启动,并使用像nmap这样的端口扫描器来发现可用的远程端口。

在所有这些之后,您将使用以下方法启动连接:

代码语言:javascript
复制
telnet <host> 3000
telnet <host> 6379

记住,仅仅因为一个人是用一种网络语言编程,这并不意味着一个人也不学习网络的技术目的。

票数 13
EN

Stack Overflow用户

发布于 2017-07-12 14:37:32

除了前面提到的内容外,我还想添加express.session{..}抛出后的错误,因为会话现在不在快捷键核心之外。

代码语言:javascript
复制
Error('Most middleware (like ' + name + ') is no longer bundled with Express an....

解决方案:添加

var session = require('express-session');

使用普通的session而不是express.session

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12038128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档