private V solrGet(K key) throws Exception {
    String id = buildSolrId(key);

    JsonObject doc = null;
    Exception ex = null;
    for (int i = 0; i < _urlGets.size(); i++) {
      try {
        doc = SolrTools.getDoc(getSolrGetUrl(), _connectTimeout, _readTimeout, id);
        ex = null;
        break;
      } catch (Exception e) {
        ex = e;
        try {
          Thread.sleep(100);
        } catch (InterruptedException e1) {
        }
      }
    }
    if (ex != null) {
      throw ex;
    }
    if (doc == null) {
      return null;
    }

    if (_mapName.startsWith(MEMCACHED_PREFIX)) { // 判断memcache是否超期
      Date birthday = SolrTools.solrDateFormat.parse(doc.getString(SolrTools.F_HZ_CTIME));
      if ((System.currentTimeMillis() - birthday.getTime()) >= DAY_30) { // 超期30天
        solrDelete(key);
        return null;
      }
    }

    String sClass = doc.getString(SolrTools.F_HZ_CLASS);
    String sValue = doc.getString(SolrTools.F_HZ_DATA);
    return (V) JsonObject.fromJson(sValue, Class.forName(sClass));
  }