javascript - Redis,带分页的排序集

标签 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

最佳答案

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

关于javascript - Redis,带分页的排序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40098207/

相关文章:

javascript - 防止 Google Charts 在图表标题中转义撇号

javascript - 如何通过平台 API 添加和删除 Heroku Dynos

Spring数据redis java.lang.NoSuchMethodError : org. springframework.util.Assert.isTrue(ZLjava/util/function/Supplier;)V

javascript - 单张 map 进度条

javascript - 如何修改WebRTC MediaStream视频轨道的内容?

javascript相当于python的dictionary.get

node.js - 监视远程文件的文件大小变化

redis更新具有相同值和ttl的键

kubernetes - 在 Kubernetes/Openshift 中将客户端-服务器流量保持在同一区域的最佳方法?

javascript - 在 HTML 中的 Datalist 中查找所选项目