我正在使用 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 状态,这很奇怪,因为我只是在我的本地主机上运行我的应用程序,而没有任何人从另一端连接它。
我是不是在代码中做错了什么。
最佳答案
这是我这边的一个错误,我更改了位于/etc/redis/redis.conf 的 redis.conf 文件中的超时值,以便 redis 连接不会进入 TIME_WAIT 状态 60 秒。
关于javascript - 使用nodejs时多次调用redis客户端的连接事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37828347/