根据此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);
});
我遇到的问题是,无论时间戳如何,zscan都会返回所有值 这个' 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);
});
答案 0 :(得分:0)
ZSCAN
没有分数范围选项。最简单的选择是使用Redis&#39; ZREMRANGEBYSCORE
,可能是这样的:
redis.zremrangebyscore('my_key','-inf', timestamp, function(error,data) { ... });
注意:如果您需要专属范围,即&lt; timestamp
,在发送值时使用(
作为前缀。