2013-09-25 144 views
1

誰能告訴我這個測試代碼有什麼問題嗎?該程序最初工作正常,但不可避免地,在幾個小時的非使用後,我得到Redis超時錯誤。請注意,我已將此帖子上的redis主機和密碼更改爲虛假信息。Redis超時錯誤

請注意,無論使用node-redis還是iris-redis驅動程序,我都會得到相同的錯誤。

var express = require('express'); 
var app = express(); 

// Redis Data Store 
var redis = require("iris-redis"); 
var client = redis.createClient(6379, "nodejitsudb5555563948.redis.irstack.com"); 
client.auth("fehehyrj971946ef332e975fbebb4"); 

client.on("ready", function() { 
    client.iris_config(function(er, config) { 
     if(er) throw er; 
     console.log("Got my server config: %j", config) 
//  client.quit() 
    }); 
}); 


// Define a test route 
app.get('/test', function(req, res) { 
    client.incr("seq:test", function(err, reply) { 
    console.log("Incremented redis counter: " + reply); 
    var body = "Incremented Redis Counter: " + reply; 
    res.setHeader('Content-Type', 'text/plain'); 
    res.setHeader('Content-Length', body.length); 
    res.end(body); 
    }); 
}); 

app.listen(8001); 
console.log('Listening on port 8001'); 
+0

你的redis服務器上CONFIG GET超時的輸出是什麼? –

回答

1

你可能有timeout未設置爲0redis-server。如果您的應用程序應該長時間處於空閒狀態,則應將timeout設置爲0。您可以檢查您的配置文件,或者使用下面通過redis-cli

CONFIG GET timeout 

如果這是已經在生產服務器上,你不能把它放下一會兒,你可以做以下設置Redis的timeout動態使用redis-cli

CONFIG SET timeout 0 

那就不要忘記設置下面一行在你的Redis的配置文件:

timeout 0