Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Redis Pipelines and Transactions
Pipeline pipeline = jedis.pipelined();
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
pipeline.set("" + i, "" + i);
}
List<Object> results = pipeline.execute();
long end = System.currentTimeMillis();
System.out.println("Pipelined SET: " + ((end - start)/1000.0) + " seconds");
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.execute();
long end = System.currentTimeMillis();
System.out.println("Pipelined transaction: " + ((end - start)/1000.0) + " seconds");
long start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
String result = jedis.set("" + i, "" + i);
}
long end = System.currentTimeMillis();
System.out.println("Simple SET: " + ((end - start)/1000.0) + " seconds");
public void pipelinedVsSimpleTransactions() {
for (int i = 1; i <= 50; i++) {
runTest(i);
System.out.println();
}
}
private void runTest(int n) {
long startSimple = System.currentTimeMillis();
Transaction tx = jedis.multi();
for (int i = 0; i < n; i++) {
tx.set("" + i, "" + i);
}
List<Object> txResult = tx.exec();
long endSimple = System.currentTimeMillis();
long simpleDiff = endSimple - startSimple;
System.out.println(n + " Simple transactions: " + simpleDiff + " milli seconds");
long startPipelined = System.currentTimeMillis();
Pipeline pipeline = jedis.pipelined();
pipeline.multi();
for (int i = 0; i < n; i++) {
pipeline.set("" + i, "" + i);
}
pipeline.exec();
List<Object> pipelineResult = pipeline.execute();
long endPipelined = System.currentTimeMillis();
long pipelinedDiff = endPipelined - startPipelined;
System.out.println(n + " Pipelined transactions: " + pipelinedDiff + " milli seconds");
System.out.println("Simple - Pipelined = " + (simpleDiff - pipelinedDiff));
}
long start = System.currentTimeMillis();
Transaction tx = jedis.multi();
for (int i = 0; i < 100000; i++) {
tx.set("" + i, "" + i);
}
List<Object> results = tx.exec();
long end = System.currentTimeMillis();
System.out.println("Transaction SET: " + ((end - start)/1000.0) + " seconds");
@opit

This comment has been minimized.

Copy link

commented Jul 1, 2013

pipeline.execute() gave me a compile error with jedis 2.10
fork with some other modifications is here (added cleanup for deleting keys between tests):
https://gist.github.com/opit/5900187

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.