我不确定usign spymemcached的最佳实践是什么,但我在互联网上看到了很多这样做的教程:
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是否真的连接了?
我想的伪代码是这样的:
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。
发布于 2016-06-09 23:23:16
当您在纯缓存场景中使用memcached时,如果连接出现问题,您可能希望快速失败。我建议您不需要检查连接状态,但要为您的操作设置严格的超时限制,例如:
GetFuture<Object> future = mc.asyncGet("1");
Object result = future.get(20, TimeUnit.MILLISECONDS);
或者设置ConnectionFactory的OpTimeout:
mc = new MemcachedClient(
new ConnectionFactoryBuilder()
.setProtocol(ConnectionFactoryBuilder.Protocol.BINARY)
.setOpTimeout(10) // the unit is milliseconds
.setAuthDescriptor(ad).build(),
AddrUtil.getAddresses("XXX"));
在经过一段时间后捕获异常并访问数据库。
https://stackoverflow.com/questions/36017425
复制相似问题