2016-10-06 18 views
0

nodejsのredisクラスタからキー配列で値を取得しようとしています。 を返します。「パイプラインのすべてのキーは同じスロットに属している必要があります」 thisコード:nodejsのredis clusterからキーの配列で値を取得

private GETALL_P(keys: string[], cb: any) { 

    var pipeline = this.client.pipeline(); 

    keys.forEach(function (key: string, index: Number) { 
     pipeline.get(key); 
    }); 

    pipeline.exec(function (err: any, result: any) { 
     cb(err, result); 
    }); 
} 

私は検索して誰かが言った:それはクラスタで動作していません。 これを行う方法はありますか?

答えて

0

Redisクラスタ上でのマルチキー操作は、同じノード上にある必要があります。これは、エラーが原因であると言います。

すべての必要な鍵を同じノードに強制するには、key hash tagsを使用できます。これは、一部のサブセットではなくすべての鍵でこれを実行する場合、クラスタの使用はかなり無意味になります。

+0

お返事ありがとうございます。問題は、データがすでに別のサービスによってレディスに保存されていることです。私はそのデータだけを読む。 –

+0

パイプラインを使用する必要がありますか?非パイプラインはうまく動作するはずです。遅くなるだけです。 –

+0

はい、パイプラインを使用するとエラーが発生しますが、パイプライン以外の場合はこのエラー "ERR EXEC without MULTI"がスローされます。 - > redis.multi({パイプライン:偽}); –

関連する問題