首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spymemcached:在获取对象之前检查连接

spymemcached:在获取对象之前检查连接
EN

Stack Overflow用户
提问于 2016-03-16 00:53:51
回答 1查看 372关注 0票数 1

我不确定usign spymemcached的最佳实践是什么,但我在互联网上看到了很多这样做的教程:

代码语言:javascript
运行
复制
  mc = new MemcachedClient(
            new ConnectionFactoryBuilder()
                  .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY)
                    .setAuthDescriptor(ad).build(),
            AddrUtil.getAddresses("XXX"));

mc.set("1", 0, "Hello");
mc.get("1");

我在想,在做设置和从mc获取东西之前,应该先检查mc是否真的连接了?

我想的伪代码是这样的:

代码语言:javascript
运行
复制
    if (mc.getConnection().connectionsStatus().equals("I'm connected!")) {
//do the sets and gets inside the if statement

}

虽然我不知道用什么来比较connectionStatus ...我似乎找不到一个这样的例子,这种比较是否真的有必要?

在我的场景中,我使用spymemcached来存储令牌和用户ids。每次将请求发送到服务器时,服务器首先从mc检索请求,如果请求不在mc中,它将从我的数据库检索请求。实际上,spymemcached每秒会被访问数百次,我不知道是否有必要在每次调用api时检查connectionsStatus。

EN

回答 1

Stack Overflow用户

发布于 2016-06-09 23:23:16

当您在纯缓存场景中使用memcached时,如果连接出现问题,您可能希望快速失败。我建议您不需要检查连接状态,但要为您的操作设置严格的超时限制,例如:

代码语言:javascript
运行
复制
        GetFuture<Object> future = mc.asyncGet("1");
        Object result = future.get(20, TimeUnit.MILLISECONDS);

或者设置ConnectionFactory的OpTimeout:

代码语言:javascript
运行
复制
  mc = new MemcachedClient(
            new ConnectionFactoryBuilder()
                  .setProtocol(ConnectionFactoryBuilder.Protocol.BINARY)
                    .setOpTimeout(10) // the unit is milliseconds
                    .setAuthDescriptor(ad).build(),
            AddrUtil.getAddresses("XXX"));

在经过一段时间后捕获异常并访问数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36017425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档