Приложение узла js с бэкэндом redis - как отправить команду "СКАНИРОВАНИЕ"

Я только что установил Redis-клиент для моего приложения узла. Информация о пакете выглядит следующим образом:

me@mydevbox:/var/www/html/node/test$ cat package.json 
{
  "name": "test",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.13.2",
    "cookie-parser": "~1.3.5",
    "debug": "~2.2.0",
    "ejs": "~2.3.3",
    "express": "~4.13.1",
    "morgan": "~1.6.1",
    "redis": "^2.6.2",
    "serve-favicon": "~2.3.0"
  }
}

Мне нужно выполнить следующую команду в моем приложении js node:

127.0.0.1:6379> SCAN 0 match widget:914*
1) "0"
2) 1) "widget:9145090003_13:00_17:00"
   2) "widget:9145090003_00:00_00:00"
   3) "widget:9145090003_08:00_12:00"
127.0.0.1:6379> 

Но я читал документы, и не ясно, как это сделать. До сих пор, используя примеры, я написал следующий код:

var client = require('redis').createClient();

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

Но я не нашел универсальный метод, который позволяет мне отправлять различные команды Redis. Это ссылка, которую я использую:

https://www.npmjs.com/package/redis

В настоящее время я гуглюсь, чтобы посмотреть, какие еще ссылки я могу найти... но любые предложения будут оценены.

Спасибо

РЕДАКТИРОВАТЬ 1

Я попробовал команду send_command, и я что-то получаю обратно... но я не совсем знаю, как запросить объект. Такое ощущение, что оно пустое...

Вот что я попробовал:

client.send_command("SCAN", [0,"MATCH", "WIDGET:914*"], function(err, reply) {

        console.log(reply[0].length);
        console.log(reply[1].length);

});

Это возвращает:

me@mydev:/var/www/html/node/test$ DEBUG=test:* npm start

> test@0.0.0 start /var/www/html/node/test
> node ./bin/www

attempting to scan ...
  translatedid:server Listening on port 3000 +0ms
1
0

Я также попробовал это:

client.send_command("SCAN", [0,"MATCH", "WIDGET:914*"], function(err, reply) {
    for (var i = 0; i < reply.length; i++) {
        console.log("variable type for item " + i + " is: " + typeof(reply));
        console.log("properties for item " + i + " are: " + Object.getOwnPropertyNames(reply[i]).sort());

        }

 });

Который возвращает:

> test@0.0.0 start /var/www/html/node/test
> node ./bin/www

attempting to scan ...
  test Listening on port 3000 +0ms
variable type for item 0 is: object
properties for item 0 are: 0,length
variable type for item 1 is: object
properties for item 1 are: length

Но я не могу понять, как достать ключи.

РЕДАКТИРОВАТЬ 2

Я должен был изменить это:

 client.send_command("SCAN", [0,"MATCH", "WIDGET:914*"], function(err, reply) {

к этому:

client.send_command("SCAN", [0,"MATCH", "widget:914*"], function(err, reply) {

Глупая ошибка.

1 ответ

node_redis и ioredis поддерживают команду сканирования напрямую, пожалуйста, еще раз вернитесь к последней версии.

Другие вопросы по тегам