Redis,带分页的排序集

wou*_*_be 0 javascript redis node.js

我目前在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]);
Run Code Online (Sandbox Code Playgroud)

然后我什么时候按年龄排序前 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) => { ... });
});
Run Code Online (Sandbox Code Playgroud)

我对如何继续这个有点困惑,我知道可以对列表进行排序,但我不知道如何在特定偏移后只获得 10 个用户。

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

Kev*_*nry 5

要使用排序集进行分页,请使用ZRANGE,而不是ZRANGEBYSCORE。参数是排名,因此要获得您使用的前 10 个用户ZRANGE user:user_by_age 0 9,获得您使用的下 10个用户ZRANGE user:user_by_age 10 19,等等。