节点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应用程序中运行以下命令:

 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); }); 

但是我还没有find一个通用的方法,允许我发送各种Redis命令。 这是我正在使用的参考:

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

我目前正在search,看看我能find什么其他的参考…但任何build议,将不胜感激。

谢谢

编辑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) { 

愚蠢的错误。

node_redis和ioredis都直接支持扫描命令,请重新访问最新版本。