@Override public List<Object> exec() { try { if (isPipelined()) { pipeline(newJedisResult(getRequiredPipeline().exec(), new TransactionResultConverter<>(new LinkedList<>(txResults), JedisConverters.exceptionConverter()))); return null; } if (transaction == null) { throw new InvalidDataAccessApiUsageException("No ongoing transaction. Did you forget to call multi?"); } List<Object> results = transaction.exec(); return !CollectionUtils.isEmpty(results) ? new TransactionResultConverter<>(txResults, JedisConverters.exceptionConverter()).convert(results) : results; } catch (Exception ex) { throw convertJedisAccessException(ex); } finally { txResults.clear(); transaction = null; } }
@Override public Response<List<Object>> exec() { String command = "exec"; return instrumented(command, () -> delegated.exec()); }
@FinishBundle public void finishBundle() { if (pipeline.isInMulti()) { pipeline.exec(); } batchCount = 0; }
public void pipeline(Consumer<Pipeline> func) { try (Jedis jedis = pool.getResource()) { try (Pipeline pipe = jedis.pipelined()) { pipe.multi(); func.accept(pipe); pipe.exec(); } catch (IOException e) { throw new RuntimeException("pipe close error", e); } } }
public Long execute(final Jedis conn) throws Exception { Pipeline pipe = conn.pipelined(); byte[] bk = SafeEncoder.encode(key); for(String field : nums.keySet()){ pipe.hincrBy(bk, SafeEncoder.encode(field), nums.get(field)); } pipe.exec(); return 1L; } });
public Long execute(final Jedis conn) throws Exception { byte[] bk = SafeEncoder.encode(key); Pipeline pipe = conn.pipelined(); for(String field : nums.keySet()){ pipe.hincrBy(bk, SafeEncoder.encode(field), -1 * nums.get(field)); } pipe.exec(); return 1L; } });
public Long execute(final Jedis conn) throws Exception { byte[] bk = SafeEncoder.encode(key); Pipeline pipe = conn.pipelined(); for(String field : nums.keySet()){ pipe.hset(bk, SafeEncoder.encode(field), SafeEncoder.encode(String.valueOf(nums.get(field)))); } pipe.exec(); return 1L; } });
@Test public void testPipelineTrans() { long start = System.currentTimeMillis(); Pipeline pipeline = jedis.pipelined(); pipeline.multi(); for (int i = 0; i < 100000; i++) { pipeline.set("" + i, "" + i); } pipeline.exec(); List<Object> results = pipeline.syncAndReturnAll(); long end = System.currentTimeMillis(); System.out.println("Pipelined transaction SET: " + ((end - start)/1000.0) + " seconds"); }
@ProcessElement public void processElement(ProcessContext processContext) { KV<String, String> record = processContext.element(); writeRecord(record); batchCount++; if (batchCount >= DEFAULT_BATCH_SIZE) { pipeline.exec(); pipeline.multi(); batchCount = 0; } }
private void exec() { // LOGGER.info("Flushing pipeline"); if (!pipeline.isInMulti()) { pipeline.multi(); } pipeline.exec(); pipeline.multi(); batchCount = 0; }
public Long execute(final Jedis conn) throws Exception { byte[] bk = SafeEncoder.encode(key); Pipeline pipe = conn.pipelined(); for(Object v : members){ pipe.sadd(bk, SafeEncoder.encode(String.valueOf(v))); } pipe.exec(); return 1L; } });
public void multiPut(List<List<Object>> keys, List<T> vals) { if (keys.size() == 0) { return; } if (Strings.isNullOrEmpty(this.options.hkey)) { String[] keyValues = buildKeyValuesList(keys, vals); mset(keyValues); } else { Jedis jedis = pool.getResource(); try { Pipeline pl = jedis.pipelined(); pl.multi(); for (int i = 0; i < keys.size(); i++) { String val = new String(serializer.serialize(vals.get(i))); pl.hset(this.options.hkey, keyFactory.build(keys.get(i)), val); } pl.exec(); pl.sync(); } finally { pool.returnResource(jedis); } } }
pipeline.exec();
@SuppressWarnings("unchecked") public <T> List<T> transactionallyDo(Consumer<Pipeline> f, String... watch) { return (List<T>) safelyReturn(jedis -> { Pipeline p = jedis.pipelined(); if (watch.length != 0) { p.watch(watch); } p.multi(); f.accept(p); Response<List<Object>> exec = p.exec(); p.sync(); return exec.get(); }); }
@Override public List<Object> exec() { try { if (isPipelined()) { pipeline(newJedisResult(getRequiredPipeline().exec(), new TransactionResultConverter<>(new LinkedList<>(txResults), JedisConverters.exceptionConverter()))); return null; } if (transaction == null) { throw new InvalidDataAccessApiUsageException("No ongoing transaction. Did you forget to call multi?"); } List<Object> results = transaction.exec(); return !CollectionUtils.isEmpty(results) ? new TransactionResultConverter<>(txResults, JedisConverters.exceptionConverter()).convert(results) : results; } catch (Exception ex) { throw convertJedisAccessException(ex); } finally { txResults.clear(); transaction = null; } }
@Override public List<Object> exec() { try { if (isPipelined()) { pipeline(newJedisResult(getRequiredPipeline().exec(), new TransactionResultConverter<>(new LinkedList<>(txResults), JedisConverters.exceptionConverter()))); return null; } if (transaction == null) { throw new InvalidDataAccessApiUsageException("No ongoing transaction. Did you forget to call multi?"); } List<Object> results = transaction.exec(); return !CollectionUtils.isEmpty(results) ? new TransactionResultConverter<>(txResults, JedisConverters.exceptionConverter()).convert(results) : results; } catch (Exception ex) { throw convertJedisAccessException(ex); } finally { txResults.clear(); transaction = null; } }
@Ignore @Test public void testOverflow() { Jedis jedis = new Jedis("localhost"); Pipeline p = jedis.pipelined(); p.multi(); for (int i = 0; i < 10000; i++) { p.setbit("test", 1, true); //or any other call } Response<List<Object>> exec = p.exec(); p.sync(); exec.get(); }