gpt4 book ai didi

transactions - 没有 MULTI 的 ERR EXEC - Jedis

转载 作者:可可西里 更新时间:2023-11-01 11:22:34 24 4
gpt4 key购买 nike

我正在学习绝地武士,我无法确切地找出这段代码中的问题所在。任何人都可以帮助我。异常发生在语句 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)

最佳答案

您应该使用 multi()close() 方法包围 pipeline.exec();。像这样:

pipeline.multi() ;
pipeline.exec();
pipeline.close();

关于transactions - 没有 MULTI 的 ERR EXEC - Jedis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16084723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com