我尝试使用node_redis制作网址列表。在下面的代码中,我获取了有序集合的长度,并将元素添加到集合的该位置。
client.on('connect', function() {
client.zcard('url',function(err, reply) {
if (reply == undefined) {
length = 0;
} else {
length = reply;
}
});
client.zadd('url',length,pagename,function(err1, reply1) {
console.log("added="+reply1);
});
client.zrange('url',0,-1,'withscores',function(err2, reply2) {
console.log(reply2);
});
});
我的问题是reply1
返回undefined,这意味着length
没有被前一段代码分配集合的长度。我在这里做错了什么?
答案 0 :(得分:0)
您可以在client.on('connect', function() {
client.zcard('url',function(err, reply) {
if (reply == undefined) {
length = 0;
} else {
length = reply;
}
client.zadd('url',length,pagename,function(err1, reply1) {
console.log("added="+reply1);
});
client.zrange('url',0,-1,'withscores',function(err2, reply2) {
console.log(reply2);
});
});
});
的回复中包含需要执行的操作,这样您就可以确保在回调为您提供回复后发生。您所拥有的示例属于JS已经在检查长度值而不等待ZCARD调用实例化的情况
lena.png
答案 1 :(得分:0)
您可以使用NX(不存在)标记和ZCOUNT。
ZCOUNT url -inf +inf
ZADD url NX http://a.com
ZRANGE url 0 -1 WITHSCORES