node_redis得到zrange withscores

问题描述 投票:4回答:4

有谁知道如何通过节点redis获得分数?我试过这样的事情:

client.ZRANGE(key, 0, -1, withscores, function(err, replies) {

});

谢谢。

node.js redis node-redis
4个回答
5
投票

这段代码看起来不错。查看以下链接以检索您想要的内容:

http://ricochen.wordpress.com/2012/02/28/example-sorted-set-functions-with-node-js-redis/

在该链接示例中添加了代码,以防它被删除。

var rc=require('redis').createClient();
var _=require('underscore');

rc.zincrby('myset', 1, 'usera');
rc.zincrby('myset', 5, 'userb');
rc.zincrby('myset', 3, 'userc');
rc.zrevrange('myset', 0, -1, 'withscores', function(err, members) {
        // the resulting members would be something like
        // ['userb', '5', 'userc', '3', 'usera', '1']
        // use the following trick to convert to
        // [ [ 'userb', '5' ], [ 'userc', '3' ], [ 'usera', '1' ] ]
        // learned the trick from
        // http://stackoverflow.com/questions/8566667/split-javascript-array-in-chunks-using-underscore-js
    var lists=_.groupBy(members, function(a,b) {
        return Math.floor(b/2);
    });
    console.log( _.toArray(lists) );
});
rc.quit();

3
投票

似乎你的代码是对的。以下是获取zrange的语法。

没有得分:

redisClient.zrange(keyName,start,stop,function(err,result){
   //result is array
   // every index will give you member name
})

例如:

redisClient.zrange("mySortedset",-1,-1,function(err,result){
       //result is array
       // every index will give you member name
})

得分:

redisClient.zrange(keyName,start,stop,'withscores',function(err,result){
   //result is array
   // here even index will hold member
   // odd index will hold its score
})

例如:

redisClient.zrange("mySortedset",-1,-1,'withscores',function(err,result){
   //result is array
   // here even index will hold member
   // odd index will hold its score
})

2
投票

我尝试了之前接受的答案,但我无法得到我想要的结果,后来我尝试使用以下代码并获得了适当的结果,

原始输出:

[ 'player:522',
    '19685',
    'player:164',
    '19594',
    'player:807',
    '19171',
    'player:694',
    '19165',
    'player:905',
    '19108',
    'player:859',
    '19087',
    'player:432',
    '18973',
    'player:515',
    '18831',
    'player:163',
    '18750',
    'player:4',
    '18552' ]

预期产量:

{
    "player:522": "19685",
    "player:164": "19594",
    "player:807": "19171",
    "player:694": "19165",
    "player:905": "19108",
    "player:859": "19087",
    "player:432": "18973",
    "player:515": "18831",
    "player:163": "18750",
    "player:4": "18552"
}

解:

redisClient.ZREVRANGE('daily', 1, 10, 'WITHSCORES', function(err, result) {
     result = _.fromPairs(_.chunk(result, 2));
     return res.status(200).json(result);
});

1
投票

版本^ 2.0的正确方法,

var args = [ key,to, from ];

redisClient.zrevrangebyscore(args,function(err,data){
© www.soinside.com 2019 - 2024. All rights reserved.