@Junior_WEB

Я получаю сообщение об ошибке Cannot use Jedis when in Multi. Please use Transaction or reset jedis state Как я могу ее поправить?

Скажите мне, как я могу исправить эту ошибку.

"Cannot use Jedis when in Multi. Please use Transaction or reset jedis state".

Я не совсем понимаю, где и что именно не так в коде.
Я также следую двум правилам, чтобы все работало. Но это не помогает.

1)Переместите все операции, выполняемые с помощью jedis в пределах этого диапазона, с начала транзакции до конца транзакции за пределы этого диапазона.
2)Примечание: Метод get объекта Response должен быть вызван после выполнения метода transaction exec. Перед выполнением метода t.exec() объект Response не содержит результата.

import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.exceptions.JedisConnectionException; 
import redis.clients.jedis.Jedis;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Response;
import redis.clients.jedis.Transaction;
import redis.clients.jedis.JedisPool;

JedisPool jedisPool = (JedisPool) props.get('jedisPool');
Jedis jedis = jedisPool.getResource();


List<Object> execResult = null;
String profileCase;
int countTry = 0;
while(execResult == null) {
  try{
    jedis.watch("Delete_Choice");
    Transaction t = jedis.multi();  
    Response<String> rs = t.rpoplpush("Delete_Choice", "Delete_Choice");  
    execResult = t.exec();
    profileCase = rs.get();
    t.close();
    t = null;
    rs = null;
  } catch (Exception e){
    countTry++;
    sleep(50);
    if(countTry > 15){
      log.error("\r\nSome error (countTry = " + countTry + ") Delete_Choice: " + e.getMessage() + "\r\n");
    }    
  } finally {
     if(!jedis.isBroken())
            //jedisPool.returnResource(jedis);
            jedis.close();
    }
}
execResult.clear();

vars.put("Delete_Choice_JM", profileCase);

//jedisPool.returnResource(jedis);
jedis = null;
jedisPool = null;
profileCase = null;
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы