2016-05-23 2 views
0

Я пытаюсь сканировать строку на Redis сервере с помощью модуля Redis, Redis-сканер, но он не работает ..сканирования строки с использованием nodejs в Redis

Пожалуйста, найти свой код, как показано ниже, и написанный узел JS. Любая помощь будет оценен

var conf = require('./config.js'); //config file declarations 
var restify = require('restify'); //restify included 
var redis = require("redis"); //redis included 
var redis_scanner = require('redis-scanner'); 

var client = redis.createClient(conf.get('redis_cm.redis_port'), conf.get('redis_cm.redis_server')); 
    client.auth(conf.get('redis_cm.auth'), function (err) { 
     if (err){ 
      throw err; 
     } 
    }); 
    client.on('connect', function() { 
     console.log('Connected to Redis'); 
    }); 
    client.select(conf.get('redis_cm.database'), function() { 
     console.log("Redis Database "+conf.get('redis_cm.database')+" selected successfully!.."); 
    }); 


var options = { 
    args: ['MATCH','CM:*','COUNT','5'], 
    onData: function(result, done){ 
     console.log(result); 
     console.log("result"); 
     client.quit();  
     process.exit(1); 
    }, 
    onEnd: function(err){ 
     console.log("error"); 
    } 
}; 

var scanner = new redis_scanner.Scanner(client, 'SCAN', null, options); 
+0

могли бы Вы более конкретно? Что именно вы пытаетесь сделать, и где в вашем коде это сломается? Что работает, что не работает? –

+0

Я бы хотел отсканировать базу данных redis и получить ключи. для этого я использовал модули redis и redis-scanner nodejs. Пожалуйста, найдите приведенный выше сценарий. Я подключаю базу данных redis, но не могу отсканировать ключи. Любая помощь, которая будет оценена. Спасибо заранее! .. –

ответ

5

Вы можете использовать scan команды доступны в Redis с версии 2.8.0. Проверьте документацию с http://redis.io/commands/scan.

Пример кода:

var cursor = '0'; 

function scan(){ 
    redisClient.scan(cursor, 'MATCH', 'CM:*', 'COUNT', '5', function(err, reply){ 
    if(err){ 
     throw err; 
    } 
    cursor = reply[0]; 
    if(cursor === '0'){ 
     return console.log('Scan Complete'); 
    }else{ 
     // do your processing 
     // reply[1] is an array of matched keys. 
     // console.log(reply[1]); 
     return scan(); 
    } 
    }); 
} 

scan(); //call scan function 
+0

Огромное вам спасибо! –

+0

'&& reply [1] .length === 0' следует удалить из инструкции if, проверка завершается, когда курсор возвращает 0, независимо от того, были ли они ключи, возвращенные в последнем сканировании или нет. Это вызовет бесконечные циклы ... – ShaneK

+0

Вспомните, что вы все равно должны обрабатывать данные, даже если это последний результат сканирования. – ShaneK

Смежные вопросы