【问题标题】:net.spy.memcached.OperationTimeoutException: Timeout waiting for valuenet.spy.memcached.OperationTimeoutException:超时等待值
【发布时间】:2013-07-30 12:27:51
【问题描述】:

我将一组值存储到 memcached 客户端中,键为 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");
        }
    }

但是当我尝试从缓存中获取 setOfKeys 时,它给了我错误

net.spy.memcached.OperationTimeoutException: Timeout waiting for value

【问题讨论】:

    标签: java memcached spymemcached


    【解决方案1】:

    MemcachedClient 中的 set 和 replace 函数是异步的,并返回 Futures。您必须在返回的对象上调用 .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 = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses("172.22.65.111:11211 172.22.65.11:11211"));.它确实有效。它给了我异常 net.spy.memcached.OperationTimeoutException: Timeout waiting for value。
    • 尝试使用 telnet 连接到 172.22.65.11 并发送一些命令,看看是否可行。如果没有,那么您要么有网络问题,要么该机器上的 memcached 无法正常运行。
    • 非常感谢...其他服务器出现问题。重新安装该服务器后,没有出现异常...再次感谢。
    猜你喜欢
    • 2020-03-09
    • 2012-04-19
    • 2012-09-20
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2016-09-04
    相关资源
    最近更新 更多