public Optional<ClientContact> get() throws IOException { byte[] result = response.get(); if (result == null) { return Optional.empty(); } TokenValue tokenValue = objectMapper.readValue(result, TokenValue.class); return Optional.of(new ClientContact(token, tokenValue.relay, tokenValue.voice, tokenValue.video)); }
@Nullable @Override @SuppressWarnings("unchecked") public T get() { return (T) getResultHolder().get(); }
/** * Syncronize pipeline by reading all responses. This operation closes the pipeline. Whenever * possible try to avoid using this version and use ShardedJedisPipeline.sync() as it won't go * through all the responses and generate the right response type (usually it is a waste of time). * @return A list of all the responses in the order you executed them. */ public List<Object> syncAndReturnAll() { List<Object> formatted = new ArrayList<Object>(); for (Client client : clients) { formatted.add(generateResponse(client.getOne()).get()); } return formatted; }
@Override public List<Object> build(Object data) { @SuppressWarnings("unchecked") List<Object> list = (List<Object>) data; List<Object> values = new ArrayList<Object>(); if (list.size() != responses.size()) { throw new JedisDataException("Expected data size " + responses.size() + " but was " + list.size()); } for (int i = 0; i < list.size(); i++) { Response<?> response = responses.get(i); response.set(list.get(i)); Object builtResponse; try { builtResponse = response.get(); } catch (JedisDataException e) { builtResponse = e; } values.add(builtResponse); } return values; }
/** * Synchronize pipeline by reading all responses. This operation close the pipeline. Whenever * possible try to avoid using this version and use Pipeline.sync() as it won't go through all the * responses and generate the right response type (usually it is a waste of time). * @return A list of all the responses in the order you executed them. */ public List<Object> syncAndReturnAll() { if (getPipelinedResponseLength() > 0) { List<Object> unformatted = client.getMany(getPipelinedResponseLength()); List<Object> formatted = new ArrayList<Object>(); for (Object o : unformatted) { try { formatted.add(generateResponse(o).get()); } catch (JedisDataException e) { formatted.add(e); } } return formatted; } else { return java.util.Collections.<Object> emptyList(); } }
public List<Object> exec() { // Discard QUEUED or ERROR client.getMany(getPipelinedResponseLength()); client.exec(); inTransaction = false; List<Object> unformatted = client.getObjectMultiBulkReply(); if (unformatted == null) { return null; } List<Object> formatted = new ArrayList<Object>(); for (Object o : unformatted) { try { formatted.add(generateResponse(o).get()); } catch (JedisDataException e) { formatted.add(e); } } return formatted; }
private void innerSync(List<Object> formatted) { try { Response<?> response; Object data; for (Client client : clients) { response = generateResponse(client.getOne()); if (null != formatted) { data = response.get(); formatted.add(data); } } } catch (JedisRedirectionException jre) { throw jre; } finally { close(); } }
@Override protected CacheResult do_PUT_ALL(Map<? extends K, ? extends V> map, long expireAfterWrite, TimeUnit timeUnit) { if (map == null) { return CacheResult.FAIL_ILLEGAL_ARGUMENT; } try (Jedis jedis = pool.getResource()) { int failCount = 0; List<Response<String>> responses = new ArrayList<>(); Pipeline p = jedis.pipelined(); for (Map.Entry<? extends K, ? extends V> en : map.entrySet()) { CacheValueHolder<V> holder = new CacheValueHolder(en.getValue(), timeUnit.toMillis(expireAfterWrite)); Response<String> resp = p.psetex(buildKey(en.getKey()), timeUnit.toMillis(expireAfterWrite), valueEncoder.apply(holder)); responses.add(resp); } p.sync(); for (Response<String> resp : responses) { if(!"OK".equals(resp.get())){ failCount++; } } return failCount == 0 ? CacheResult.SUCCESS_WITHOUT_MSG : failCount == map.size() ? CacheResult.FAIL_WITHOUT_MSG : CacheResult.PART_SUCCESS_WITHOUT_MSG; } catch (Exception ex) { logError("PUT_ALL", "map(" + map.size() + ")", ex); return new CacheResult(ex); } }
public List<ClientContact> get(List<byte[]> tokens) { try (Jedis jedis = redisPool.getWriteResource()) { Pipeline pipeline = jedis.pipelined(); List<Response<byte[]>> futures = new LinkedList<>(); List<ClientContact> results = new LinkedList<>(); try { for (byte[] token : tokens) { futures.add(pipeline.hget(DIRECTORY_KEY, token)); } } finally { pipeline.sync(); } IterablePair<byte[], Response<byte[]>> lists = new IterablePair<>(tokens, futures); for (Pair<byte[], Response<byte[]>> pair : lists) { try { if (pair.second().get() != null) { TokenValue tokenValue = objectMapper.readValue(pair.second().get(), TokenValue.class); ClientContact clientContact = new ClientContact(pair.first(), tokenValue.relay, tokenValue.voice, tokenValue.video); results.add(clientContact); } } catch (IOException e) { logger.warn("Deserialization Problem: ", e); } } return results; } }
columnValues = (List) response.get();
((RedisTransaction) resource).onExecute(((Transaction) connection)); Map<String, String> cols = (Map<String, String>) response.get(); connection = getConnection();
results = (Set<String>) response.get();
fieldValues = (List<byte[]>) response.get(); connection = getConnection();
results = (Set<String>) response.get();
resultKeys = (Set<String>) response.get();
@Override public Map<byte[], byte[]> get() { return CollectionUtils.transform(response.get(), new CollectionUtils.MapEntryTransform<byte[], byte[], byte[]>() { @Override public byte[] get(byte[] key, byte[] val) { return decompressValue(val); } }); }
results = (Set<String>) response.get();
@Override Set<String> execute() { Pipeline pipeline = jedis.getShard(key).pipelined(); Response<Set<String>> result = pipeline.hkeys(key); pipeline.expire(key, expire); pipeline.sync(); return result.get(); } }.getResult();
@Override Long execute() { Pipeline pipeline = jedis.getShard(key).pipelined(); Response<Long> result = pipeline.lpush(key, value); // 修剪列表元素, 如果 size - 1 比 end 下标还要大,Redis将 size 的值设置为 end 。 pipeline.ltrim(key, 0, size - 1); pipeline.sync(); return result.get(); } }.getResult();