복붙노트

[REDIS] NodeJs - 사용 레디 스, 명시 적으로 연결 - 레디 스

REDIS

NodeJs - 사용 레디 스, 명시 적으로 연결 - 레디 스

노트 레디 스 고민하는 경우, 레디 스 서버가 시작되어야한다. "레디 스-SERVER.EXE"를 실행하여 https://github.com/dmajkic/redis/downloads는 다음 서버를 시작 창에서 다음 링크를 확인하는 레디 스 분배가

나는 node.js.에 대한 자습서를 따라 다음입니다 튜토리얼은 Express와 레디 스를 사용합니다. 나는 (그들이 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에서 수신 대기 시작합니다. 레디 스 오류 메시지가 내가 바인딩 레디 스 및 RedisStore을 어떻게 이해 무엇 RedisStore,에 redisClient를 전달하는 경우이 문제가 발생 포트 6379.에 연결을 언급하고있다.

나는 윈도우에서 개발하고

해결법

  1. ==============================

    1.당신은 레디 스 서버를 실행하지 않는 것 같습니다. 당신은 다운로드하여 설치하고 서버와 클라이언트를 실행하는 방법에 대한 redis.io/download에 대한 좋은 설명이있다.

    당신은 레디 스 서버를 실행하지 않는 것 같습니다. 당신은 다운로드하여 설치하고 서버와 클라이언트를 실행하는 방법에 대한 redis.io/download에 대한 좋은 설명이있다.

  2. ==============================

    2.코드가 제공하는 벌금, 단지 구성 잘못된 것입니다. 변경해야하는 모든 포트 번호입니다.

    코드가 제공하는 벌금, 단지 구성 잘못된 것입니다. 변경해야하는 모든 포트 번호입니다.

    하나는 레디 스 저장 하나에 연결이 레디 스 서버가있는 어떤 포트에서 수신 대기하는 응용 프로그램을 말하고 설정으로 이동 예를 들어. 하나는 모두 함께 포트 지시어를 드롭 할 수와 연결 - 레디 스 원격 레디 스 서버의 기본 포트를 사용합니다.

    이 경우 나는이 코드를 시도하는 것이 좋습니다 것입니다 :

    변화:

    store: new RedisStore({ ..., port: 3000, ... })
    

    새로운:

    store: new RedisStore({..., port: 6379, ... })
    

    최신 정보:

    나는 명령, 핑 NETSTAT한다는 것은 잊지 않았고, 텔넷 포트가 로컬로 열려 있고 서비스가 응용 프로그램에 반환하는 것을 디버깅을 할 수 있습니다. 이 두 명령은 cmd.exe를 / PowerShell에서 그리고 만약 배쉬에서 실행 될 것이다 당신의 리눅스, OSX, 또는 BSD 등 유닉스 환경입니다.

    이것의 예는 다음을 실행하는 것입니다 :

    윈도우 :

    netstat -np tcp | find "3000"
    
    netstat -np tcp | find "6379"
    

    리눅스 :

    netstat -nlt | grep '3000\|6379'
    

    중 로컬 호스트에 대한 어떤이가하는 것은 보고서 로컬 오픈 포트 : 3000 로컬 호스트 : 6379. 당신이 원격 시스템과 함께 작동 할 경우에는 서버가 있고 nmap을 같은 어떤 snort 원격 포트를 사용할 발견 할 수 있는지 확인하기 위해 핑을 사용합니다.

    당신은 사용하여 연결은 모든이를 개시 할 것이다 다음 :

    telnet <host> 3000
    telnet <host> 6379
    

    하나는 평균 하나가 하나의 네트워킹 기술 끝을 학습하지 않습니다하지 않는 웹 언어로 프로그래밍되어해서, 기억하십시오.

  3. ==============================

    3.언급 한 것과 또한, 내가 추가하고 싶습니다 세션이 이제 명시 핵심 부족으로 express.session {..}는 다음과 같은 오류가 발생합니다.

    언급 한 것과 또한, 내가 추가하고 싶습니다 세션이 이제 명시 핵심 부족으로 express.session {..}는 다음과 같은 오류가 발생합니다.

    Error('Most middleware (like ' + name + ') is no longer bundled with Express an....
    

    해결책: 더하다

    var에 세션 =은 ( '세션을 표현')이 필요합니다;

    그리고 express.session 대신 일반 세션을 사용하여

  4. from https://stackoverflow.com/questions/12038128/nodejs-using-redis-connect-redis-with-express by cc-by-sa and MIT license