0

サンプル node.js コードの拡張は次のとおりです。

var express = require('express');
var application = express.createServer();

var redis = require("redis"),
    client = redis.createClient();

client.on("error", function (err) {
    console.log("Error " + err);
});

client.set("test key", "TEST KEY VALUE", redis.print);

application.get('/', function(request, response) {
        client.get('test key', function(err, value) {
            client.quit();
            response.send('The value of "test key" is: ' + value);
        });
});

application.listen(2455);

サーバーは正常に起動しますが、アクセスすると、ページがしばらくロードされ、最終的に「データが受信されませんでした」というエラーが発生します。

私はredisを実行しており、キーは正常に保存されています。また、ノードのreplでclient.get() jutsを介してそれらにアクセスすることもできます。

非同期プログラムがどのように機能するかについての理論が欠けていると思います。

4

2 に答える 2

1

Redis/redis ライブラリでは、クライアント接続を明示的に強制終了する必要はないと思います。その場合でも、クライアントを終了する前に、成功またはエラーのコールバックが呼び出されて処理されていることを確認する必要があります。

それが役に立てば幸い。

于 2012-07-13T22:01:01.590 に答える
1

エラーが発生する可能性があります。res.send の前にerr変数をチェックしていないため、アプリケーションは何も返しません。次のようなものを追加してみてください: if(err) throw err; client.get の後に STDOUT を確認してください

于 2012-07-14T18:35:28.283 に答える