Node.js & redis / zadd 对象到集合

MID*_*E11 5 redis node.js

我有以下代码:

var db = require("redis");
var dbclient1 = db.createClient();

dbclient1.zadd("myprivateset", 3, {"guid":"abab-baba", "data-persistent":"xxxx", "size":"20"})
dbclient1.zadd("myprivateset", 2, {"guid":"abab-baba3", "data-persistent":"xxxx", "size":"20"})
dbclient1.zrangebyscore("myprivateset", 1, 4)
dbclient1.hgetall("myprivateset", function(err, rep){
 console.log(rep);
});
Run Code Online (Sandbox Code Playgroud)

我希望将我的对象(以 JSON 格式)存储在一个排序集中,这由分数(在我们的例子中为 3 和 2)决定。

出于某种原因,当我打印此表 ( rep) 时,我得到了未定义的信息。

我做错了什么?

cpe*_*ra1 5

问题 1 -- 排序的集合键

尝试将您用作排序集的键的 JSON 字符串化。例如,

dbclient1.zadd("myprivateset", 3, {"guid":"abab-baba", "data-persistent":"xxxx", "size":"20"}) 
Run Code Online (Sandbox Code Playgroud)

需要是:

dbclient1.zadd("myprivateset", 3, JSON.stringify({"guid":"abab-baba", "data-persistent":"xxxx", "size":"20"})) 
Run Code Online (Sandbox Code Playgroud)

如果没有对键进行字符串化,每个 zadd 每次都会使用键[object Object]覆盖。也就是说,您的排序集中将只有一项无法识别(除了 by [object Object])。

问题 2 -- 获取数据

此外,hgetall也不是用于在 redis 排序集中检索数据的 redis 命令。您需要专注于排序集的特定命令。此处列出了 redis 命令列表:http : //redis.io/commands