gpt4 book ai didi

java - spymemcached:如何判断memcached是否已连接成功?

转载 作者:行者123 更新时间:2023-12-01 10:03:28 27 4
gpt4 key购买 nike

我正在使用以下库: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 变量并检查它,但是有没有更简单的方法可以在调用 get 之前检查spymemcached是否已连接是吗?

最佳答案

您可以通过访问 MemcachedClientMemcachedNode 对象来直接检查节点是否处于 Activity 状态,而不是解析 active 变量。您可以按如下所示实现它:

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 继续重新连接到服务器,导致程序挂起。

关于java - spymemcached:如何判断memcached是否已连接成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36632638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com