2016-10-06 6 views
0

Я пытаюсь получить значения по массиву ключей из redis cluster в nodejs, и возвращает ошибку: «Все ключи в конвейере должны принадлежать одному слоту» это является кодом:Получить значения по массиву ключей из redis cluster в nodejs

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

Благодарим за ответ. Проблема в том, что данные уже сохранены в redis различными службами. Я только читал эти данные. –

+0

Вам нужно использовать конвейер? Non-pipelined должен работать нормально, он будет только медленнее. –

+0

Да, эта ошибка возникает, когда я использую конвейер, но не-конвейерный код выдает эту ошибку «ERR EXEC без MULTI». -> redis.multi ({трубопровод: ложь}); –