簡體   English   中英

spymemcached:如何確定memcached是否已成功連接?

[英]spymemcached: how can I tell whether memcached had connected successfully?

我正在使用以下庫: compile 'net.spy:spymemcached:2.12.0'

因此,如果執行此操作,則如果memcachedclient未成功連接,則會給我一個錯誤:

mc.get(myvariable)

我想在調用mc.get()之前檢查連接狀態以防止錯誤。

我以為也許我可以檢查一下: mc.getConnection().connectionsStatus()但它所做的一切都會返回一個字符串:

Connection Status { pub-memcache-XXX active: false, authed: false, last read: 7 ms ago }

我以為它只會返回SUCCESSFAILURE但是會返回一個字符串。

該方法的文檔在這里: https : //github.com/couchbase/spymemcached/blob/master/src/main/java/net/spy/memcached/MemcachedConnection.java

我復制了以下相關方法:

  /**
   * Construct a String containing information about all nodes and their state.
   *
   * @return a stringified representation of the connection status.
   */
  public String connectionsStatus() {
    StringBuilder connStatus = new StringBuilder();
    connStatus.append("Connection Status {");
    for (MemcachedNode node : locator.getAll()) {
      connStatus
        .append(" ")
        .append(node.getSocketAddress())
        .append(" active: ")
        .append(node.isActive())
        .append(", authed: ")
        .append(node.isAuthenticated())
        .append(MessageFormat.format(", last read: {0} ms ago",
          node.lastReadDelta()));
    }
    connStatus.append(" }");
    return connStatus.toString();
  }

我不知道,我可以解析出active變化,檢查,但沒有檢查spymemcached是否連接之前,我打電話更簡單的方法get它?

相反解析的active變化,你可以直接檢查節點是主動或不通過訪問MemcachedNode對象為您MemcachedClient 您可以如下所示實現它:

for (MemcachedNode node : mc.getNodeLocator().getAll()) {
        if (!node.isActive()) {
            System.out.println("Failed to connect to Memcached server");
            mc.shutdown();
            //Handle accordingly
        }
}

您可以使用mc.shutdown()因為MemcachedClient繼續重新連接到服務器,導致程序掛起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM