我有以下代码:
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) 时,我得到了未定义的信息。
我做错了什么?
问题 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
| 归档时间: |
|
| 查看次数: |
10778 次 |
| 最近记录: |