我正在使用node + redis,当我运行我的应用程序时,我遇到了一个奇怪的问题,redis客户端的连接事件被自动调用多次,如redis.js文件所示。
以下是我的代码Server.js:
var express=require('express');
var app=express();
var port=8000;
var path = require('path');
var logger=require('morgan');
var bodyParser = require('body-parser');
var router = express.Router();
app.use(logger('dev'));
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.get('/',function(req,res){
res.send({message:"Welcome to nodejs APIS"});
});
var redisObj=require('./redis.js');
app.use('/redischeck',redisObj);
app.listen(port,function(err,res){ if(err){ console.log("Server error");}else{console.log("Server running on port 8000");}});
redis.js
var express = require('express');
var router = express.Router();
var redis = require("redis");
var client = redis.createClient();
client.on('connect', function() {
console.log('connected'); // Prints multiple time in console
});
router.get('/', function(req, res) {
client.on("error", function (err) { console.log("Error " + err);});
client.set("foo", "bar", function (err, reply) {
client.quit();
res.json({status:'Success'});
});
});
module.exports=router;
我还使用' netstat -na |交叉检查了这个问题grep 6379'。我观察了很多连接被创建然后进入TIME_WAIT状态,这很奇怪,因为我只是在我的localhost上运行我的app而没有任何人从另一端连接它。
我在代码中做错了什么。
答案 0 :(得分:0)
我身边的错误是我在/etc/redis/redis.conf中的redis.conf文件中更改了超时值,因此redis连接不会在TIME_WAIT状态下持续60秒。