Java net.spy.memcached.OperationTimeoutException:等待值的超时

Java net.spy.memcached.OperationTimeoutException:等待值的超时,java,memcached,spymemcached,Java,Memcached,Spymemcached,我将一组值存储到memcached客户机中,其中key作为setOfKeys。 我将值放入memcached中,如下所示 Set<String> keys=new HashSet<String>(); mMemcachedClient = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses("172.22.65.111:11211 172.22.6

我将一组值存储到memcached客户机中,其中key作为setOfKeys。 我将值放入memcached中,如下所示

Set<String> keys=new HashSet<String>();
mMemcachedClient = new MemcachedClient(new BinaryConnectionFactory(),
                AddrUtil.getAddresses("172.22.65.111:11211 172.22.65.11:11211"));

public void put(Object key, Object value) throws Result {

        try {
            synchronized (mMemcachedClient) {
                this.keys.add(key.toString());

                if(keys.size()==1){
                    mMemcachedClient.set(String.valueOf(hg.hash("setOfKeys")),
                            7200, keys);
                }
                else{
                    mMemcachedClient.replace(String.valueOf(hg.hash("setOfKeys")),
                            7200, keys);
                }
                mMemcachedClient.set(String.valueOf(hg.hash(key.toString())),
                        7200, value);
            }
        } catch (Excep`enter code here`tion ex) {`enter code here`
            mLogger.error(ex.getMessage());
            throw new Result("ERROR_PUT_MEMCACHED_INTO_CACHE");
        }
    }
Set key=newhashset();
mMemcachedClient=newmemcachedclient(new BinaryConnectionFactory(),
AddrUtil.getAddresses(“172.22.65.111:11211 172.22.65.11:11211”);
公共void put(对象键、对象值)抛出结果{
试一试{
已同步(mMemcachedClient){
this.keys.add(key.toString());
如果(keys.size()==1){
mMemcachedClient.set(String.valueOf(hg.hash(“setOfKeys”)),
7200,钥匙);
}
否则{
mMemcachedClient.replace(String.valueOf(hg.hash(“setOfKeys”)),
7200,钥匙);
}
mMemcachedClient.set(String.valueOf(hg.hash(key.toString())),
7200,价值);
}
}catch(在此处输入代码除外){在此处输入代码`
mLogger.error(例如getMessage());
抛出新结果(“错误\u将\u MEMCACHED\u放入\u缓存”);
}
}
但是,当我试图从缓存中获取密钥集时,它给出了错误


net.spy.memcached.OperationTimeoutException:等待值的超时

MemcachedClient中的set和replace函数是异步的,并返回未来值。必须对返回的对象调用.get(),才能使其阻塞,直到操作完成

mMemcachedClient.set(String.valueOf(hg.hash("setOfKeys")), 7200, keys).get();

您还应该检查上面语句的返回值,以确保操作成功。

当我的memcached客户端中只有本地服务器作为mMemcachedClient=new MemcachedClient(new BinaryConnectionFactory(),AddrUtil.getAddresses(“172.22.65.111:11211”);时。但当我增加像mMemcachedClient=newmemcachedclient(newbinaryconnectionfactory(),AddrUtil.getAddresses(“172.22.65.111:11211172.22.65.11:11211”);这样的服务器时;。它确实有效。它给了我异常net.spy.memcached.OperationTimeoutException:等待值超时。请尝试使用telnet连接到172.22.65.11,并发送一些命令,看看是否有效。如果没有,则可能是网络问题,或者该计算机上的memcached功能不正常。Thanx很多…问题是与其他服务器有关。重新安装该服务器后,没有出现异常。Thanx再次出现。