diff --git a/redisson/src/main/java/org/redisson/RedissonRateLimiter.java b/redisson/src/main/java/org/redisson/RedissonRateLimiter.java index f0c032804..a5b4005c8 100644 --- a/redisson/src/main/java/org/redisson/RedissonRateLimiter.java +++ b/redisson/src/main/java/org/redisson/RedissonRateLimiter.java @@ -194,7 +194,7 @@ public class RedissonRateLimiter extends RedissonExpirable implements RRateLimit + "local expiredValues = redis.call('zrangebyscore', permitsName, 0, tonumber(ARGV[2]) - interval); " + "local released = 0; " + "for i, v in ipairs(expiredValues) do " - + "local random, permits = struct.unpack('Lc0I', v);" + + "local random, permits = struct.unpack('Bc0I', v);" + "released = released + permits;" + "end; " @@ -212,13 +212,13 @@ public class RedissonRateLimiter extends RedissonExpirable implements RRateLimit + "local firstValue = redis.call('zrange', permitsName, 0, 0, 'withscores'); " + "return 3 + interval - (tonumber(ARGV[2]) - tonumber(firstValue[2]));" + "else " - + "redis.call('zadd', permitsName, ARGV[2], struct.pack('Lc0I', string.len(ARGV[3]), ARGV[3], ARGV[1])); " + + "redis.call('zadd', permitsName, ARGV[2], struct.pack('Bc0I', string.len(ARGV[3]), ARGV[3], ARGV[1])); " + "redis.call('decrby', valueName, ARGV[1]); " + "return nil; " + "end; " + "else " + "redis.call('set', valueName, rate); " - + "redis.call('zadd', permitsName, ARGV[2], struct.pack('Lc0I', string.len(ARGV[3]), ARGV[3], ARGV[1])); " + + "redis.call('zadd', permitsName, ARGV[2], struct.pack('Bc0I', string.len(ARGV[3]), ARGV[3], ARGV[1])); " + "redis.call('decrby', valueName, ARGV[1]); " + "return nil; " + "end;", @@ -312,7 +312,7 @@ public class RedissonRateLimiter extends RedissonExpirable implements RRateLimit + "local expiredValues = redis.call('zrangebyscore', permitsName, 0, tonumber(ARGV[1]) - interval); " + "local released = 0; " + "for i, v in ipairs(expiredValues) do " - + "local random, permits = struct.unpack('Lc0I', v);" + + "local random, permits = struct.unpack('Bc0I', v);" + "released = released + permits;" + "end; "