没有MULTI的ERR EXEC-Jedis

我正在学习jedis,我无法确切找出此代码中的问题。任何人都可以帮助我。异常发生在语句tx.exec()

public class JedisFactory {

public static void main (String [] args){

JedisPool pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1", 6379);

Jedis jedis = pool.getResource();

Pipeline pipeline = jedis.pipelined();

for(int i=0; i < 1000 ; i++){

pipeline.hincrBy("Id", i+"", i);

}

pipeline.exec();

pool.returnResource(jedis);

jedis = pool.getResource();

Transaction tx = jedis.multi();

Response<Map<String,String>> map = tx.hgetAll("Id");

tx.hincrBy("Id","2", 1);

**tx.exec();**

//Map<String,String> map1 = jedis.hgetAll("Id");

pool.returnResource(jedis);

pool.destroy();

}

}

Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: ERR EXEC without MULTI

at redis.clients.jedis.Protocol.processError(Protocol.java:54)

at redis.clients.jedis.Protocol.process(Protocol.java:61)

at redis.clients.jedis.Protocol.read(Protocol.java:122)

at redis.clients.jedis.Connection.getAll(Connection.java:207)

at redis.clients.jedis.BinaryTransaction.exec(BinaryTransaction.java:23)

at com.work.JedisFactory.main(JedisFactory.java:30)

回答:

在for循环之前添加pipeline.multi()解决了该问题。但是该异常在修复之前在其他行抛出。

以上是 没有MULTI的ERR EXEC-Jedis 的全部内容, 来源链接: utcz.com/qa/404377.html

回到顶部