我正在学习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()解决了该问题。但是该异常在修复之前在其他行抛出。