Obyvante
Obyvante

Reputation: 105

Redis SYNC and EXEC

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

Answers (1)

tabreaz
tabreaz

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

Related Questions