protected RFuture<Void> putAllOperationAsync(Map<? extends K, ? extends V> map) { List<Object> params = new ArrayList<Object>(map.size()*2 + 1); params.add(getName()); for (java.util.Map.Entry<? extends K, ? extends V> t : map.entrySet()) { checkKey(t.getKey()); checkValue(t.getValue()); params.add(encodeMapKey(t.getKey())); params.add(encodeMapValue(t.getValue())); } RFuture<Void> future = commandExecutor.writeAsync(getName(), codec, RedisCommands.HMSET, params.toArray()); return future; }
protected RFuture<Void> putAllOperationAsync(Map<? extends K, ? extends V> map) { List<Object> params = new ArrayList<Object>(map.size()*2 + 1); params.add(getName()); for (java.util.Map.Entry<? extends K, ? extends V> t : map.entrySet()) { checkKey(t.getKey()); checkValue(t.getValue()); params.add(encodeMapKey(t.getKey())); params.add(encodeMapValue(t.getValue())); } RFuture<Void> future = commandExecutor.writeAsync(getName(), codec, RedisCommands.HMSET, params.toArray()); return future; }
@Override public RFuture<Boolean> containsValueAsync(Object value) { checkValue(value); return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, "local s = redis.call('hvals', KEYS[1]);" + "for i = 1, #s, 1 do " + "if ARGV[1] == s[i] then " + "return 1 " + "end " + "end;" + "return 0", Collections.<Object>singletonList(getName()), encodeMapValue(value)); }
@Override public RFuture<Boolean> containsValueAsync(Object value) { checkValue(value); return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, "local s = redis.call('hvals', KEYS[1]);" + "for i = 1, #s, 1 do " + "if ARGV[1] == s[i] then " + "return 1 " + "end " + "end;" + "return 0", Collections.<Object>singletonList(getName()), encodeMapValue(value)); }
@Override public RFuture<V> putIfAbsentAsync(final K key, final V value) { checkKey(key); checkValue(key); RFuture<V> future = putIfAbsentOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<V> future) { return future.getNow() == null; } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> putAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<V> future = putOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastPutAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastPutOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> addAndGetAsync(final K key, Number value) { checkKey(key); checkValue(value); final RFuture<V> future = addAndGetOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, future.getNow()); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> putAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<V> future = putOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastPutAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastPutOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> addAndGetAsync(final K key, Number value) { checkKey(key); checkValue(value); final RFuture<V> future = addAndGetOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, future.getNow()); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> replaceAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<V> future = replaceOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<V> future) { return future.getNow() != null; } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastPutIfAbsentAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastPutIfAbsentOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastReplaceAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastReplaceOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> putIfAbsentAsync(final K key, final V value) { checkKey(key); checkValue(key); RFuture<V> future = putIfAbsentOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<V> future) { return future.getNow() == null; } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> removeAsync(final Object key, Object value) { checkKey(key); checkValue(value); RFuture<Boolean> future = removeOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().delete((K) key); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastPutIfAbsentAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastPutIfAbsentOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> removeAsync(final Object key, Object value) { checkKey(key); checkValue(value); RFuture<Boolean> future = removeOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().delete((K) key); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<Boolean> fastReplaceAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<Boolean> future = fastReplaceOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<Boolean> listener = new MapWriterTask<Boolean>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<Boolean> future) { return future.getNow(); } }; return mapWriterFuture(future, listener); }
@Override public RFuture<V> replaceAsync(final K key, final V value) { checkKey(key); checkValue(value); RFuture<V> future = replaceOperationAsync(key, value); if (hasNoWriter()) { return future; } MapWriterTask<V> listener = new MapWriterTask<V>() { @Override public void execute() { options.getWriter().write(key, value); } @Override protected boolean condition(Future<V> future) { return future.getNow() != null; } }; return mapWriterFuture(future, listener); }