【问题标题】:Redis sortedset get top 100 or N scores with values in descending order errorRedis sortedset 获得前 100 或 N 个分数,其中值按降序排列错误
【发布时间】:2022-12-17 13:45:50
【问题描述】:

我有带有 https://www.npmjs.com/package/redis 包的 nodejs(typescript),redis 版本是redis_version:4.0.14. 我正在尝试使用排序集中的值获得前 100 个分数。它按升序运行正常,但是当我设置 REV: true 为降序时,它会抛出语法错误异常。降序是我需要的排行榜。我做错了什么吗?

redisClient.zRangeWithScores('lb:global', 0, 99)

这给=>[{“价值”:“用户:2”,“得分”:10},{“价值”:“用户:4”,“得分”:20}....{“价值”:“用户:1” ,“分数”:100}]

上面的命令工作正常,但下面的降序命令没有

redisClient.zRangeWithScores('lb:global', 0, 99, { REV: true })

这给=>[ErrorReply: ERR 语法错误]

【问题讨论】:

    标签: node.js typescript redis sortedset


    【解决方案1】:

    看起来 redis 包中的 zRangeWithScores 方法期望 REV 选项作为字符串传递,而不是布尔值。您可以通过将 REV 选项作为字符串传递来修复语法错误,如下所示:

    redisClient.zRangeWithScores('lb:global', 0, 99, { REV: 'true' });
    

    或者,您可以直接使用 ZREVRANGE 命令按降序从排序集中检索前 100 个分数,如下所示:

    redisClient.zrevrange('lb:global', 0, 99, 'WITHSCORES');
    

    我希望这有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多