在得分

时间:2016-07-19 11:49:42

标签: node.js redis

根据此https://github.com/NodeRedis/node_redis/issues/896

我有zset,我将令牌(元素)保存到相应的时间戳(得分)

现在我想使用zscan删除比特定时间戳更早的令牌。

redis.zscan('my_key', cursor[i], 'MATCH', '*', "COUNT", count, function(err, 
  console.log(err);
  console.log(reply);
});

我遇到的问题是,无论时间戳如何,zs​​can都会返回所有值 这个' MATCH'参数检查元素上的模式(令牌)。 我希望所有的令牌都比某个特定的时间戳(得分)更早。

例如:

var startingTime = new Date().getTime();


    redis.zrangebyscore("iflychat_auth_token", 0, startingTime - 43200000 * 2 * 7, function (error, data) {
       // This will return all token older the 7 days.
        });

有没有办法使用' MATCH'得分 像这样的东西

redis.zscan('my_key', cursor[i], 'MATCH', < timestamp, "COUNT", count, function(err, 
  console.log(err);
  console.log(reply);
});

1 个答案:

答案 0 :(得分:0)

ZSCAN没有分数范围选项。最简单的选择是使用Redis&#39; ZREMRANGEBYSCORE,可能是这样的:

redis.zremrangebyscore('my_key','-inf', timestamp, function(error,data) { ... });

注意:如果您需要专属范围,即&lt; timestamp,在发送值时使用(作为前缀。