@Override public RFuture<Boolean> retainAllAsync(Collection<?> c) { if (c.isEmpty()) { return deleteAsync(); } long score = 92233720368547758L - System.currentTimeMillis(); List<Object> params = new ArrayList<Object>(c.size()*2); for (Object object : c) { params.add(score); params.add(encode((V)object)); } return commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, "redis.call('zadd', KEYS[2], unpack(ARGV)); " + "local prevSize = redis.call('zcard', KEYS[1]); " + "local size = redis.call('zinterstore', KEYS[1], #ARGV/2, KEYS[1], KEYS[2], 'aggregate', 'min');" + "redis.call('del', KEYS[2]); " + "return size ~= prevSize and 1 or 0; ", Arrays.<Object>asList(getName(), "redisson_temp__{" + getName() + "}"), params.toArray()); }
@Override public RFuture<Boolean> retainAllAsync(Collection<?> c) { if (c.isEmpty()) { return deleteAsync(); } long score = 92233720368547758L - System.currentTimeMillis(); List<Object> params = new ArrayList<Object>(c.size()*2); for (Object object : c) { params.add(score); params.add(encode((V)object)); } return commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, "redis.call('zadd', KEYS[2], unpack(ARGV)); " + "local prevSize = redis.call('zcard', KEYS[1]); " + "local size = redis.call('zinterstore', KEYS[1], #ARGV/2, KEYS[1], KEYS[2], 'aggregate', 'min');" + "redis.call('del', KEYS[2]); " + "return size ~= prevSize and 1 or 0; ", Arrays.<Object>asList(getName(), "redisson_temp__{" + getName() + "}"), params.toArray()); }
@Override public RFuture<Boolean> retainAllAsync(Collection<?> c) { if (c.isEmpty()) { return deleteAsync(); } long score = 92233720368547758L - System.currentTimeMillis(); List<Object> params = new ArrayList<Object>(c.size()*2); for (Object object : c) { params.add(score); params.add(encode((V)object)); } return commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, "redis.call('zadd', KEYS[2], unpack(ARGV)); " + "local prevSize = redis.call('zcard', KEYS[1]); " + "local size = redis.call('zinterstore', KEYS[1], #ARGV/2, KEYS[1], KEYS[2], 'aggregate', 'min');" + "redis.call('del', KEYS[2]); " + "return size ~= prevSize and 1 or 0; ", Arrays.<Object>asList(getName(), "redisson_temp__{" + getName() + "}"), params.toArray()); }