• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java JedisAskDataException类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中redis.clients.jedis.exceptions.JedisAskDataException的典型用法代码示例。如果您正苦于以下问题:Java JedisAskDataException类的具体用法?Java JedisAskDataException怎么用?Java JedisAskDataException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



JedisAskDataException类属于redis.clients.jedis.exceptions包,在下文中一共展示了JedisAskDataException类的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: processError

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private static void processError(final RedisInputStream is) {
	String message = is.readLine();
	// TODO: I'm not sure if this is the best way to do this.
	// Maybe Read only first 5 bytes instead?
	if (message.startsWith(MOVED_RESPONSE)) {
		String[] movedInfo = parseTargetHostAndSlot(message);
		throw new JedisMovedDataException(message, new HostAndPort(movedInfo[1], Integer.valueOf(movedInfo[2])),
				Integer.valueOf(movedInfo[0]));
	} else if (message.startsWith(ASK_RESPONSE)) {
		String[] askInfo = parseTargetHostAndSlot(message);
		throw new JedisAskDataException(message, new HostAndPort(askInfo[1], Integer.valueOf(askInfo[2])),
				Integer.valueOf(askInfo[0]));
	} else if (message.startsWith(CLUSTERDOWN_RESPONSE)) {
		throw new JedisClusterException(message);
	} else if (message.startsWith(BUSY_RESPONSE)) {
		throw new JedisBusyException(message);
	} else if (message.startsWith(NOSCRIPT_RESPONSE)) {
		throw new JedisNoScriptException(message);
	}
	throw new JedisDataException(message);
}
 
开发者ID:qq1588518,项目名称:JRediClients,代码行数:22,代码来源:Protocol.java


示例2: processError

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private static void processError(final RedisInputStream is) {
  String message = is.readLine();
  // TODO: I'm not sure if this is the best way to do this.
  // Maybe Read only first 5 bytes instead?
  if (message.startsWith(MOVED_RESPONSE)) {
    String[] movedInfo = parseTargetHostAndSlot(message);
    throw new JedisMovedDataException(message, new HostAndPort(movedInfo[1],
        Integer.valueOf(movedInfo[2])), Integer.valueOf(movedInfo[0]));
  } else if (message.startsWith(ASK_RESPONSE)) {
    String[] askInfo = parseTargetHostAndSlot(message);
    throw new JedisAskDataException(message, new HostAndPort(askInfo[1],
        Integer.valueOf(askInfo[2])), Integer.valueOf(askInfo[0]));
  } else if (message.startsWith(CLUSTERDOWN_RESPONSE)) {
    throw new JedisClusterException(message);
  }
  throw new JedisDataException(message);
}
 
开发者ID:x7-framework,项目名称:x7,代码行数:18,代码来源:Protocol.java


示例3: processError

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
/**
 * 处理Redis集群重定向"请求错误"响应。
 *
 * @param is
 */
private static void processError(RedisInputStream is) {
	String message = is.readLine();
	// TODO: I'm not sure if this is the best way to do this.
	// Maybe Read only first 5 bytes instead?
	if (message.startsWith(MOVED_RESPONSE)) {
		String[] movedInfo = parseTargetHostAndSlot(message);
		throw new JedisMovedDataException(message, new HostAndPort(
				movedInfo[1], Integer.valueOf(movedInfo[2])),
				Integer.valueOf(movedInfo[0]));
	} else if (message.startsWith(ASK_RESPONSE)) {
		String[] askInfo = parseTargetHostAndSlot(message);
		throw new JedisAskDataException(message, new HostAndPort(
				askInfo[1], Integer.valueOf(askInfo[2])),
				Integer.valueOf(askInfo[0]));
	} else if (message.startsWith(CLUSTERDOWN_RESPONSE)) {
		throw new JedisClusterException(message);
	}
	throw new JedisDataException(message);
}
 
开发者ID:EdwardLee03,项目名称:jedis-sr,代码行数:25,代码来源:Protocol.java


示例4: testThrowAskException

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
@Test(expected = JedisAskDataException.class)
public void testThrowAskException() {
  int keySlot = JedisClusterCRC16.getSlot("test");
  String node3Id = JedisClusterTestUtil.getNodeId(node3.clusterNodes());
  node2.clusterSetSlotMigrating(keySlot, node3Id);
  node2.get("test");
}
 
开发者ID:qq1588518,项目名称:JRediClients,代码行数:8,代码来源:JedisClusterTest.java


示例5: runWithRetries

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private T runWithRetries(byte[] key, int attempts, boolean tryRandomNode, boolean asking) {
	if (attempts <= 0) {
		throw new JedisClusterMaxRedirectionsException("Too many Cluster redirections?");
	}

	Jedis connection = null;
	try {

		if (asking) {
			// TODO: Pipeline asking with the original command to make it
			// faster....
			connection = askConnection.get();
			connection.asking();

			// if asking success, reset asking flag
			asking = false;
		} else {
			if (tryRandomNode) {
				connection = connectionHandler.getConnection();
			} else {
				connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key));
			}
		}

		return execute(connection);

	} catch (JedisNoReachableClusterNodeException jnrcne) {
		throw jnrcne;
	} catch (JedisConnectionException jce) {
		// release current connection before recursion
		releaseConnection(connection);
		connection = null;

		if (attempts <= 1) {
			// We need this because if node is not reachable anymore - we need to finally
			// initiate slots renewing,
			// or we can stuck with cluster state without one node in opposite case.
			// But now if maxAttempts = 1 or 2 we will do it too often. For each time-outed
			// request.
			// TODO make tracking of successful/unsuccessful operations for node - do
			// renewing only
			// if there were no successful responses from this node last few seconds
			this.connectionHandler.renewSlotCache();

			// no more redirections left, throw original exception, not
			// JedisClusterMaxRedirectionsException, because it's not MOVED situation
			throw jce;
		}

		return runWithRetries(key, attempts - 1, tryRandomNode, asking);
	} catch (JedisRedirectionException jre) {
		// if MOVED redirection occurred,
		if (jre instanceof JedisMovedDataException) {
			// it rebuilds cluster's slot cache
			// recommended by Redis cluster specification
			this.connectionHandler.renewSlotCache(connection);
		}

		// release current connection before recursion or renewing
		releaseConnection(connection);
		connection = null;

		if (jre instanceof JedisAskDataException) {
			asking = true;
			askConnection.set(this.connectionHandler.getConnectionFromNode(jre.getTargetNode()));
		} else if (jre instanceof JedisMovedDataException) {
		} else {
			throw new JedisClusterException(jre);
		}

		return runWithRetries(key, attempts - 1, false, asking);
	} finally {
		releaseConnection(connection);
	}
}
 
开发者ID:qq1588518,项目名称:JRediClients,代码行数:76,代码来源:JedisClusterCommand.java


示例6: runWithRetries

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private T runWithRetries(String key, int redirections, boolean tryRandomNode, boolean asking) {
  if (redirections <= 0) {
    throw new JedisClusterMaxRedirectionsException("Too many Cluster redirections?");
  }

  Jedis connection = null;
  try {

    if (asking) {
      // TODO: Pipeline asking with the original command to make it
      // faster....
      connection = askConnection.get();
      connection.asking();

      // if asking success, reset asking flag
      asking = false;
    } else {
      if (tryRandomNode) {
        connection = connectionHandler.getConnection();
      } else {
        connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key));
      }
    }

    return execute(connection);
  } catch (JedisConnectionException jce) {
    if (tryRandomNode) {
      // maybe all connection is down
      throw jce;
    }

    // release current connection before recursion
    releaseConnection(connection);
    connection = null;

    // retry with random connection
    return runWithRetries(key, redirections - 1, true, asking);
  } catch (JedisRedirectionException jre) {
    // release current connection before recursion or renewing
    releaseConnection(connection);
    connection = null;

    if (jre instanceof JedisAskDataException) {
      asking = true;
      askConnection.set(this.connectionHandler.getConnectionFromNode(jre.getTargetNode()));
    } else if (jre instanceof JedisMovedDataException) {
      // it rebuilds cluster's slot cache
      // recommended by Redis cluster specification
      this.connectionHandler.renewSlotCache();
    } else {
      throw new JedisClusterException(jre);
    }

    return runWithRetries(key, redirections - 1, false, asking);
  } finally {
    releaseConnection(connection);
  }

}
 
开发者ID:x7-framework,项目名称:x7,代码行数:60,代码来源:JedisClusterCommand.java


示例7: runWithRetries

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private T runWithRetries(byte[] key, int redirections, boolean tryRandomNode, boolean asking) {
  if (redirections <= 0) {
      JedisClusterMaxRedirectionsException exception = new JedisClusterMaxRedirectionsException("Too many Cluster redirections? key=" + SafeEncoder.encode(key));
      //收集
      UsefulDataCollector.collectException(exception, "", System.currentTimeMillis(), ClientExceptionType.REDIS_CLUSTER);
      throw exception;
  }

  Jedis connection = null;
  try {

    if (asking) {
      // TODO: Pipeline asking with the original command to make it
      // faster....
      connection = askConnection.get();
      connection.asking();

      // if asking success, reset asking flag
      asking = false;
    } else {
      if (tryRandomNode) {
        connection = connectionHandler.getConnection();
      } else {
        connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key));
      }
    }

    return execute(connection);
  } catch (JedisConnectionException jce) {
    if (tryRandomNode) {
      // maybe all connection is down
      throw jce;
    }

    // release current connection before recursion
    releaseConnection(connection);
    connection = null;

    // retry with random connection
    return runWithRetries(key, redirections - 1, true, asking);
  } catch (JedisRedirectionException jre) {
    // if MOVED redirection occurred,
    if (jre instanceof JedisMovedDataException) {
      // it rebuilds cluster's slot cache
      // recommended by Redis cluster specification
      this.connectionHandler.renewSlotCache(connection);
    }

    // release current connection before recursion or renewing
    releaseConnection(connection);
    connection = null;

    if (jre instanceof JedisAskDataException) {
      asking = true;
      askConnection.set(this.connectionHandler.getConnectionFromNode(jre.getTargetNode()));
    } else if (jre instanceof JedisMovedDataException) {
    } else {
      throw new JedisClusterException(jre);
    }

    return runWithRetries(key, redirections - 1, false, asking);
  } finally {
    releaseConnection(connection);
  }
}
 
开发者ID:sohutv,项目名称:cachecloud,代码行数:66,代码来源:JedisClusterCommand.java


示例8: runWithRetries

import redis.clients.jedis.exceptions.JedisAskDataException; //导入依赖的package包/类
private T runWithRetries(byte[] key, int redirections, boolean tryRandomNode, boolean asking) {
  if (redirections <= 0) {
    throw new JedisClusterMaxRedirectionsException("Too many Cluster redirections?");
  }

  Jedis connection = null;
  try {

    if (asking) {
      // TODO: Pipeline asking with the original command to make it
      // faster....
      connection = askConnection.get();
      connection.asking();

      // if asking success, reset asking flag
      asking = false;
    } else {
      if (tryRandomNode) {
        connection = connectionHandler.getConnection();
      } else {
        connection = connectionHandler.getConnectionFromSlot(JedisClusterCRC16.getSlot(key));
      }
    }

    return execute(connection);
  } catch (JedisConnectionException jce) {
    if (tryRandomNode) {
      // maybe all connection is down
      throw jce;
    }

    // release current connection before recursion
    releaseConnection(connection);
    connection = null;

    // retry with random connection
    return runWithRetries(key, redirections - 1, true, asking);
  } catch (JedisRedirectionException jre) {
    // if MOVED redirection occurred,
    if (jre instanceof JedisMovedDataException) {
      // it rebuilds cluster's slot cache
      // recommended by Redis cluster specification
      this.connectionHandler.renewSlotCache(connection);
    }

    // release current connection before recursion or renewing
    releaseConnection(connection);
    connection = null;

    if (jre instanceof JedisAskDataException) {
      asking = true;
      askConnection.set(this.connectionHandler.getConnectionFromNode(jre.getTargetNode()));
    } else if (jre instanceof JedisMovedDataException) {
    } else {
      throw new JedisClusterException(jre);
    }

    return runWithRetries(key, redirections - 1, false, asking);
  } finally {
    releaseConnection(connection);
  }
}
 
开发者ID:Wangab,项目名称:Jedis,代码行数:63,代码来源:JedisClusterCommand.java



注:本文中的redis.clients.jedis.exceptions.JedisAskDataException类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java FieldSplitterMeta类代码示例发布时间:2022-05-22
下一篇:
Java TreeNodeInfo类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap