<!-- language: lang-java -->
Object result = stringRedisTemplate.execute(new SessionCallback<Session>() {
public Session execute(RedisOperations redisOperations) throws DataAccessException {
try{
redisOperations.watch(xxx);
redisOperations.multi();
int i = 1/0; //Test redis transaction rollback
//...
List<Object> execResult = redisOperations.exec();
}finally{
redisOperations.unwatch();
return null
}
}
В середине блоков кода multi и exec, намеренно добавляя строку (int i = 1/0
), будет выдан код исключения для проверки отката транзакции SDR, и обнаружится, что исключение (redis.clients.jedis.exceptions.JedisDataException: Cannot use Jedis when in Multi. Please use Transation or reset jedis state.
)
Почему выбрасывается это исключение?