gresrun / jesque

An implementation of Resque in Java.

Home Page:http://gresrun.github.io/jesque

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Performance degradation since LUA pop

ofirnk opened this issue · comments

Hey,

Since version 2.1.1 we're seeing a major performance hit on large (~150K) delayed queue.
After some investigation we've spotted a redis API change:

While version 2.1.0 used

final Set<Tuple> payloadSet = this.jedis.zrangeByScoreWithScores(key, -1, now, 0, 1);

https://github.com/gresrun/jesque/compare/jesque-2.1.0...jesque-2.1.1?expand=1#diff-b8c8d894abaf0c2984a9c5235a7a11d9L452

On the new (and awesome!) lua script the LIMIT is missing:

next(redis.call('ZRANGEBYSCORE', queueKey, '-inf', now, 'WITHSCORES')

https://github.com/gresrun/jesque/compare/jesque-2.1.0...jesque-2.1.1?expand=1#diff-e588be0a4ba44bf62e8390bb5f7914afR14

So it looks the only change that is needed is this:
redis.call('ZRANGEBYSCORE', queueKey, '-inf', now, 'WITHSCORES', 'LIMIT' , '0' , '1')

(added the last 3 parameters)