【发布时间】:2013-01-03 08:40:55
【问题描述】:
我正在尝试找出如何最好地从 Mongo 集合中获取一组 10 个随机项目。我的计划是在 Redis 中存储一组 Mongo ID,使用 Redis SRANDMEMBER 命令获取 10 个随机 ID,然后从 Mongo 集合中获取。
由于我使用的是 Node,我无法使用 SRANDMEMBER 10,因为节点“redis”包不接受可选的第二个参数。
我真正遇到的问题是如何以异步友好的方式做到这一点。我试过使用node异步库提供的几个工具,比如Waterfall和While,但是Redis调用总是比数据来得晚。
编辑#2:
为了响应下面的帮助,我将我的功能细化如下:
client.send_command("SRANDMEMBER", ["album_id_set", "10"], function(err, results) {
if (err) console.log('Redis error: ' + err);
Album.find({
'_id' : { $in: results }
}, function(err, result){
if (err) console.log('Mongo error: ' + err);
response.json(result);
});
});
【问题讨论】: