当前位置: 首页 > 面试题库 >

NodeJs-使用redis,connect-redis和express

单于俊智
2023-03-14
问题内容

注意对于那些使用Redis挣扎的人,必须启动Redis服务器。
在Windows上,有一个redis发行版,请查看以下链接:https
:
//github.com/dmajkic/redis/downloads,然后通过启动“
redis-server.exe”来启动服务器。

我正在遵循有关node.js的教程。本教程使用Express和Redis。我安装了redis和connect-
redis(在package.json中引用了它们):

npm install redis connect-redis --save

在我的server.js中(仅是有意义的部分):

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

错误信息:

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

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

我正在Windows上进行开发


问题答案:

看来您没有运行Redis服务器。您在redis.io/download上有一个很好的解释,说明如何下载,安装并运行服务器和客户端。



 类似资料:
  • 问题内容: 我正在尝试使用nodejs和node_redis构建一个通用的发布/订阅服务器,该服务器接收带有通道名称的浏览器的请求,并以该通道也已发布的任何数据作为响应。为此,我使用了来自浏览器的长轮询请求,并通过在通道上收到消息时发送响应来处理这些请求。 对于每个新请求,都会创建一个对象来订阅该频道(如果且仅当该频道不存在时)。 这是处理订阅渠道的最佳方法,还是还有其他更直观的方法? 问题答案:

  • 问题内容: 开始使用redis作为sub / pub系统在新项目上工作,以显示mysql数据库的结果。因此,如果有更新,我想将这些更新从mysql发布到我的网页。我的问题是,哪种选择更好? 选项1:是否应该仅通过nodejs和socket.io完成所有这些工作?意思是创建一个连接到redis的nodejs脚本,订阅我需要收听的频道,在nodejs中使用mysql查询数据库以获取更新,如果更新发布了

  • 问题内容: 开始使用redis作为sub / pub系统在新项目上工作,以显示mysql数据库的结果。因此,如果有更新,我想将这些更新从mysql发布到我的网页。我的问题是,哪种选择更好? 选项1:是否应该仅通过nodejs和socket.io完成所有这些工作?意思是创建一个连接到redis的nodejs脚本,订阅我需要收听的频道,在nodejs中使用mysql查询数据库以获取更新,如果更新发布了

  • 我在AWS(ElastiCache)上配置了Redis集群。 它有一个配置endpoint和6个节点(3个碎片)。 在这里阅读npm模块的文档时,它说您必须合并ioredis才能使其用于Redis集群。 我共享了以下配置,该配置适用于单个Redis节点,但不适用于集群 我的问题是-如何合并ioredis来支持集群? 这对我来说是一个巨大的障碍,所以任何帮助都将受到高度赞赏。 全网找例子,一无所获!

  • 问题内容: 我想为我的项目构建一个实时聊天系统,但实际上我在使用Redis时遇到了一些问题,因为我希望尽可能地更好地存储数据。 我的问题: 我想使用Socket Io在一个封闭的小组(两个人)中进行实时聊天,但是如何存储消息呢? Redis是一个键值存储,这意味着如果我要存储某些内容,则需要在存储之前向数据添加唯一键。 如果同一用户发布多个消息,那么我将在redis中使用哪些键?我正在考虑将唯一I

  • 我在我的服务器上运行redis(redis不在容器中运行),我试图连接到我的容器中的redis,其中有一个运行Node.js应用程序。当从日志中的Dockerfile中使用节点应用程序启动Docker容器时,会出现以下错误: