Redis,用分页排序

时间:2016-10-18 01:40:44

标签: javascript node.js redis

我目前在Redis中有以下数据结构

client.hmset('user:' + user.id, 'id', user.id, 'user', JSON.stringify(meta));
client.zadd(['user:user_by_created_time', meta.created_time, 'user:' + user.id]);
client.zadd(['user:user_by_age', meta.age, 'user:' + user.id]);

然后,当我按照年龄排序前10位用户时,如果超过10位,我应该能够通过允许我使用分页的offset

我目前拥有以下内容

client.zrangebyscore(['user:user_by_age', '-inf', '+inf'], (err, results) => {
    const multi = client.multi();
    results.forEach(result => {
        multi.hgetall(result);
    });

    multi.exec((err, results) => { ... });
});

我有点坚持如何继续这个,我知道可以对列表进行排序,但我无法弄清楚如何在特定偏移量之后只获得10个用户。

我正在使用Node Redis客户端:https://github.com/NodeRedis/node_redis

1 个答案:

答案 0 :(得分:2)

要对已排序的集进行分页,请使用perldoc Time::Local,而不是ZRANGEBYSCORE。参数是排名,因此要使用ZRANGE user:user_by_age 0 9获得前10位用户,要使用ZRANGE user:user_by_age 10 19等获得接下来的10位用户