RMapCache.fastRemove doesn't work with keys amount more than 5000. Fixed

pull/395/head
Nikita 9 years ago
parent edb3bfaf35
commit 027c347003

@ -332,8 +332,12 @@ public class RedissonMapCacheReactive<K, V> extends RedissonMapReactive<K, V> im
} }
return commandExecutor.evalWriteReactive(getName(), codec, EVAL_FAST_REMOVE, return commandExecutor.evalWriteReactive(getName(), codec, EVAL_FAST_REMOVE,
"redis.call('zrem', KEYS[2], unpack(ARGV)); " "local r = 0;"
+ "return redis.call('hdel', KEYS[1], unpack(ARGV)); ", + "for i=1, #ARGV,5000 do "
+ "r += redis.call('hdel', KEYS[1], unpack(ARGV, i, math.min(i+4999, #ARGV))); "
+ "redis.call('zrem', KEYS[2], unpack(ARGV, i, math.min(i+4999, #ARGV))); "
+ "end "
+ "return r;",
Arrays.<Object>asList(getName(), getTimeoutSetName()), keys); Arrays.<Object>asList(getName(), getTimeoutSetName()), keys);
} }

Loading…
Cancel
Save