Reputation: 105
Redis pipeline has 2 options to send commands to database "exec" and "sync". I'd want to know what is the difference between them.
I'll use Jedis ,java api for redis, for the examples.
Examples
Example 1
try (Jedis resource = redisManager.getResource()) {
Pipeline pipeline = resource.pipelined();
pipeline.multi();
pipeline.del("test-1");
pipeline.hset("test-2", "a", "b");
pipeline.exec();
}
Example 2
try (Jedis resource = redisManager.getResource()) {
Pipeline pipeline = resource.pipelined();
pipeline.multi();
pipeline.del("test-1");
pipeline.hset("test-2", "a", "b");
pipeline.sync();
}
Upvotes: 1
Views: 1839
Reputation: 659
pipeline execute method returns
Response<List<?>>
whereas sync returns void, however, to get response from pipeline using sync you have to capture individual responses, something like this.
Response<Long> isDeleted = pipeline.del("test-1");
Response<Long> isSuccess = pipeline.hset("test-2", "a", "b");
Response<List<String>> hvals = pipeline.hvals("test-2");
pipeline.sync();
assertEquals(1, (long) isDeleted.get());
Upvotes: 1