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

标签 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.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:WAITING值超时

最佳答案

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

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

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

关于java - net.spy.memcached.OperationTimeoutException : Timeout waiting for value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947047/

相关文章:

Java创建子类构造函数时出错

java - Glassfish部署项目的依赖库

php - 如何使用 PHP 将数据存储在 RAM 内存中?

java - pymemcached get 和 incr 方法给出完全不同的结果

java - 防止与spymemcached冲突

Java泛型(简单案例,推理清晰)

java - Mapreduce 编程 : details required

memcached - Memcached 的分布式特性

php - 内存缓存限制(MySQL 和 PHP)

java - 将spymemcached Java 客户端GetFuture 适配为Guava ListenableFuture